]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: mark concatstring as variadic (fixes 386 build)
authorRuss Cox <rsc@golang.org>
Thu, 18 Jul 2013 16:19:38 +0000 (12:19 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 18 Jul 2013 16:19:38 +0000 (12:19 -0400)
Windows was the only one seeing this bug reliably in the builder,
but it was easy to reproduce using 'GOGC=1 go test strconv'.
concatstring looked like it took only one string, but in fact it
takes a long list of strings. Add an explicit ... so that the traceback
will not use the "fixed" frame size and instead look at the
frame size metadata recorded by the caller.

R=golang-dev
TBR=golang-dev
CC=golang-dev
https://golang.org/cl/11531043

src/pkg/runtime/string.goc

index 30639f9bb64d60bd3330ec54180abba9e0737121..108487d69d0b3cb9f716d02d6c1991845f9e94c3 100644 (file)
@@ -170,10 +170,13 @@ concatstring(intgo n, String *s)
        return out;
 }
 
+// NOTE: Cannot use func syntax, because we need the ...,
+// to signal to the garbage collector that this function does
+// not have a fixed size argument count.
 #pragma textflag 7
-// s1 is the first of n strings.
-// the output string follows.
-func concatstring(n int, s1 String) {
+void
+runtime·concatstring(int32 n, String s1, ...)
+{
        (&s1)[n] = concatstring(n, &s1);
 }