]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: fix an internal crash in embed
authorRuss Cox <rsc@golang.org>
Wed, 30 Oct 2024 14:18:00 +0000 (10:18 -0400)
committerGopher Robot <gobot@golang.org>
Tue, 5 Nov 2024 18:54:20 +0000 (18:54 +0000)
Observed in the telemetry data. Was causing truncated error outputs.

Change-Id: I9f0a86e1e6caa855f97a3d6e51328c4c9685c937
Reviewed-on: https://go-review.googlesource.com/c/go/+/623535
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Robert Griesemer <gri@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Russ Cox <rsc@golang.org>

src/cmd/compile/internal/staticdata/embed.go
src/cmd/compile/testdata/script/embedbad.txt [new file with mode: 0644]

index be939db877fd34a56a87364625efa89a614e7f4b..28468bda0379d261b20ca455fd32c641a31e0ed5 100644 (file)
@@ -113,6 +113,9 @@ func WriteEmbed(v *ir.Name) {
        }
 
        files := embedFileList(v, kind)
+       if base.Errors() > 0 {
+               return
+       }
        switch kind {
        case embedString, embedBytes:
                file := files[0]
diff --git a/src/cmd/compile/testdata/script/embedbad.txt b/src/cmd/compile/testdata/script/embedbad.txt
new file mode 100644 (file)
index 0000000..09e4254
--- /dev/null
@@ -0,0 +1,19 @@
+# Check that compiler does not silently crash at bad embed error.
+
+! go build
+stderr 'multiple files for type string'
+stderr 'multiple files for type \[\]byte'
+
+-- go.mod --
+module m
+
+-- x.go --
+package p
+
+import _ "embed"
+
+//go:embed x.go go.mod
+var s string
+
+//go:embed x.go go.mod
+var b []byte