]> Cypherpunks repositories - gostls13.git/commitdiff
avoid pointer-to-slice operations in gobuild
authorRuss Cox <rsc@golang.org>
Mon, 22 Jun 2009 21:24:32 +0000 (14:24 -0700)
committerRuss Cox <rsc@golang.org>
Mon, 22 Jun 2009 21:24:32 +0000 (14:24 -0700)
R=r
DELTA=19  (3 added, 1 deleted, 15 changed)
OCL=30591
CL=30601

src/cmd/gobuild/gobuild.go
src/cmd/gobuild/util.go

index d7e9de8ffaa748d493655573982e1147f63af983..ae1ea938a62a19b4c839e8bc0140476b5eca3cfa 100644 (file)
@@ -60,31 +60,33 @@ type Info struct {
 var verbose = flag.Bool("v", false, "verbose mode")
 var writeMakefile = flag.Bool("m", false, "write Makefile to standard output")
 
-func PushPkg(v *[]*Pkg, p *Pkg) {
+func PushPkg(vp *[]*Pkg, p *Pkg) {
+       v := *vp;
        n := len(v);
        if n >= cap(v) {
                m := 2*n + 10;
                a := make([]*Pkg, n, m);
-               for i := range *v {
+               for i := range v {
                        a[i] = v[i];
                }
-               *v = a;
+               v = a;
        }
-       *v = v[0:n+1];
+       *vp = v[0:n+1];
        v[n] = p;
 }
 
-func PushFile(v *[]*File, p *File) {
+func PushFile(vp *[]*File, p *File) {
+       v := *vp;
        n := len(v);
        if n >= cap(v) {
                m := 2*n + 10;
                a := make([]*File, n, m);
-               for i := range *v {
+               for i := range v {
                        a[i] = v[i];
                }
-               *v = a;
+               v = a;
        }
-       *v = v[0:n+1];
+       *vp = v[0:n+1];
        v[n] = p;
 }
 
index 94a4e6a73d2d36db5ea22dd636a62cc805552829..bc826dbafb65dc8c260777db329b577af26037a1 100644 (file)
@@ -71,21 +71,21 @@ func init() {
        }
 }
 
-func PushString(v *[]string, p string) {
+func PushString(vp *[]string, p string) {
+       v := *vp;
        n := len(v);
        if n >= cap(v) {
                m := 2*n + 10;
                a := make([]string, n, m);
-               for i := range *v {
+               for i := range v {
                        a[i] = v[i];
                }
-               *v = a;
+               v = a;
        }
-       *v = v[0:n+1];
+       *vp = v[0:n+1];
        v[n] = p;
 }
 
-
 func run(argv []string, flag int) (ok bool) {
        argv0 := bin[argv[0]];
        null, err := os.Open("/dev/null", os.O_RDWR, 0);