aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/metrics/description_test.go7
-rw-r--r--src/runtime/metrics/sample.go3
2 files changed, 10 insertions, 0 deletions
diff --git a/src/runtime/metrics/description_test.go b/src/runtime/metrics/description_test.go
index 0ee9ea16d0..71c7b00b02 100644
--- a/src/runtime/metrics/description_test.go
+++ b/src/runtime/metrics/description_test.go
@@ -156,3 +156,10 @@ func TestDocs(t *testing.T) {
fmt.Fprintf(os.Stderr, "go test -generate: doc.go already up-to-date\n")
}
}
+
+func TestReadEmptySlice(t *testing.T) {
+ // Test that Read does not panic when given an empty slice.
+ // This should be a no-op.
+ metrics.Read(nil)
+ metrics.Read([]metrics.Sample{})
+}
diff --git a/src/runtime/metrics/sample.go b/src/runtime/metrics/sample.go
index 9efc5c5f06..df1341d48c 100644
--- a/src/runtime/metrics/sample.go
+++ b/src/runtime/metrics/sample.go
@@ -43,5 +43,8 @@ func runtime_readMetrics(unsafe.Pointer, int, int)
// Sample values with names not appearing in [All] will have their Value populated
// as KindBad to indicate that the name is unknown.
func Read(m []Sample) {
+ if len(m) == 0 {
+ return
+ }
runtime_readMetrics(unsafe.Pointer(&m[0]), len(m), cap(m))
}