From a44ed023f600de1b8fbeb2be514ec20c964b3330 Mon Sep 17 00:00:00 2001 From: Oleksandr Redko Date: Fri, 6 Feb 2026 20:52:22 +0200 Subject: [PATCH] cmd/go: fix panic in 'go run -C' Fixes #77483 Change-Id: Ie772ce1619beadc1a6db87aaf28a8d9c31f7d1b8 Reviewed-on: https://go-review.googlesource.com/c/go/+/742860 Reviewed-by: Junyang Shao LUCI-TryBot-Result: Go LUCI Auto-Submit: Ian Alexander Reviewed-by: Sean Liao Reviewed-by: Ian Alexander Auto-Submit: Sean Liao --- src/cmd/go/internal/toolchain/select.go | 3 +++ src/cmd/go/testdata/script/mod_run_flags_issue77483.txt | 4 ++++ 2 files changed, 7 insertions(+) create mode 100644 src/cmd/go/testdata/script/mod_run_flags_issue77483.txt diff --git a/src/cmd/go/internal/toolchain/select.go b/src/cmd/go/internal/toolchain/select.go index 0cb93f67e1..e7a9af793c 100644 --- a/src/cmd/go/internal/toolchain/select.go +++ b/src/cmd/go/internal/toolchain/select.go @@ -658,6 +658,9 @@ func maybeSwitchForGoInstallVersion(loaderstate *modload.State, minVers string) } if bf, ok := f.Value.(interface{ IsBoolFlag() bool }); !ok || !bf.IsBoolFlag() { + if len(args) == 0 { + return + } // The next arg is the value for this flag. Skip it. args = args[1:] continue diff --git a/src/cmd/go/testdata/script/mod_run_flags_issue77483.txt b/src/cmd/go/testdata/script/mod_run_flags_issue77483.txt new file mode 100644 index 0000000000..9a5d367349 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_run_flags_issue77483.txt @@ -0,0 +1,4 @@ +# Regression test for https://go.dev/issue/77483: 'go run -C' should not panic. + +! go run -C +stderr 'flag needs an argument: -C' -- 2.52.0