Przeglądaj źródła

fix(googlereader): avoid infinite recursion in StreamType.String

The default case of StreamType.String called itself, causing a stack
overflow for any value outside the known stream types. It now returns
the numeric value instead.
Frédéric Guillot 15 godzin temu
rodzic
commit
df36373527

+ 1 - 1
internal/googlereader/stream.go

@@ -66,7 +66,7 @@ func (st StreamType) String() string {
 	case LikeStream:
 		return "LikeStream"
 	default:
-		return st.String()
+		return fmt.Sprintf("StreamType(%d)", int(st))
 	}
 }
 

+ 22 - 0
internal/googlereader/stream_test.go

@@ -0,0 +1,22 @@
+// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package googlereader // import "miniflux.app/v2/internal/googlereader"
+
+import "testing"
+
+func TestStreamTypeString(t *testing.T) {
+	scenarios := map[StreamType]string{
+		NoStream:       "NoStream",
+		FeedStream:     "FeedStream",
+		LikeStream:     "LikeStream",
+		StreamType(42): "StreamType(42)",
+		StreamType(-1): "StreamType(-1)",
+	}
+
+	for streamType, expected := range scenarios {
+		if result := streamType.String(); result != expected {
+			t.Errorf(`Unexpected result for stream type %d, got %q instead of %q`, int(streamType), result, expected)
+		}
+	}
+}