]> Cypherpunks repositories - gostls13.git/commitdiff
use copy
authorRuss Cox <rsc@golang.org>
Wed, 27 Oct 2010 04:52:54 +0000 (21:52 -0700)
committerRuss Cox <rsc@golang.org>
Wed, 27 Oct 2010 04:52:54 +0000 (21:52 -0700)
R=gri
CC=golang-dev
https://golang.org/cl/2763041

45 files changed:
src/pkg/archive/tar/writer.go
src/pkg/bufio/bufio.go
src/pkg/bufio/bufio_test.go
src/pkg/bytes/buffer.go
src/pkg/bytes/buffer_test.go
src/pkg/bytes/bytes.go
src/pkg/bytes/bytes_test.go
src/pkg/crypto/block/cbc.go
src/pkg/crypto/block/cfb.go
src/pkg/crypto/block/cipher.go
src/pkg/crypto/block/ctr.go
src/pkg/crypto/block/eax.go
src/pkg/crypto/block/ecb.go
src/pkg/crypto/block/ofb.go
src/pkg/crypto/md4/md4.go
src/pkg/crypto/md5/md5.go
src/pkg/crypto/ripemd160/ripemd160.go
src/pkg/crypto/sha1/sha1.go
src/pkg/crypto/sha256/sha256.go
src/pkg/crypto/sha512/sha512.go
src/pkg/crypto/x509/x509.go
src/pkg/debug/dwarf/type.go
src/pkg/debug/macho/file.go
src/pkg/exp/4s/4s.go
src/pkg/exp/eval/expr.go
src/pkg/exp/eval/func.go
src/pkg/exp/eval/type.go
src/pkg/exp/nacl/srpc/msg.go
src/pkg/exp/nacl/srpc/server.go
src/pkg/exp/ogle/process.go
src/pkg/go/doc/doc.go
src/pkg/net/dnsmsg.go
src/pkg/os/dir_darwin.go
src/pkg/os/dir_freebsd.go
src/pkg/os/dir_linux.go
src/pkg/os/dir_nacl.go
src/pkg/os/env_windows.go
src/pkg/os/file_windows.go
src/pkg/scanner/scanner_test.go
src/pkg/strings/strings.go
src/pkg/syscall/syscall.go
src/pkg/template/template.go
src/pkg/testing/regexp.go
src/pkg/unicode/maketables.go
src/pkg/xml/xml.go

index 1f2656d3249eb4e75951039c577454931952cacc..8673bad316663d524be38d40068aec7880562c96 100644 (file)
@@ -71,9 +71,7 @@ func (tw *Writer) cString(b []byte, s string) {
                }
                return
        }
-       for i, ch := range []byte(s) {
-               b[i] = ch
-       }
+       copy(b, s)
        if len(s) < len(b) {
                b[len(s)] = 0
        }
index 70caf5dae81412e14d5224b9244687d438eb56ca..b5b8fb3ee6fbf2a84307351cddf9b079dd8b3fb3 100644 (file)
@@ -316,9 +316,7 @@ func (b *Reader) ReadBytes(delim byte) (line []byte, err os.Error) {
                        full = make([][]byte, 16)
                } else if nfull >= len(full) {
                        newfull := make([][]byte, len(full)*2)
-                       for i := 0; i < len(full); i++ {
-                               newfull[i] = full[i]
-                       }
+                       copy(newfull, full)
                        full = newfull
                }
 
index 753cf3e77f7a404533afcfe9c3fe2c1941643b22..ef91d94cae9288cd8218ed5e2e8a1c0d8727866f 100644 (file)
@@ -179,10 +179,7 @@ type StringReader struct {
 func (r *StringReader) Read(p []byte) (n int, err os.Error) {
        if r.step < len(r.data) {
                s := r.data[r.step]
-               for i := 0; i < len(s); i++ {
-                       p[i] = s[i]
-               }
-               n = len(s)
+               n = copy(p, s)
                r.step++
        } else {
                err = os.EOF
index 01e6aef674f664e0039d3cbfe3f7a6b982a4cfe8..6f93869584327fba904ed13f211960b4aeba78ab 100644 (file)
@@ -12,14 +12,6 @@ import (
        "utf8"
 )
 
-// Copy from string to byte array at offset doff.  Assume there's room.
-func copyString(dst []byte, doff int, str string) {
-       for soff := 0; soff < len(str); soff++ {
-               dst[doff] = str[soff]
-               doff++
-       }
-}
-
 // A Buffer is a variable-sized buffer of bytes with Read and Write methods.
 // The zero value for Buffer is an empty buffer ready to use.
 type Buffer struct {
@@ -99,8 +91,7 @@ func (b *Buffer) Write(p []byte) (n int, err os.Error) {
 // value n is the length of s; err is always nil.
 func (b *Buffer) WriteString(s string) (n int, err os.Error) {
        m := b.grow(len(s))
-       copyString(b.buf, m, s)
-       return len(s), nil
+       return copy(b.buf[m:], s), nil
 }
 
 // MinRead is the minimum slice size passed to a Read call by
@@ -259,7 +250,5 @@ func NewBuffer(buf []byte) *Buffer { return &Buffer{buf: buf} }
 // initial contents.  It is intended to prepare a buffer to read an existing
 // string.
 func NewBufferString(s string) *Buffer {
-       buf := make([]byte, len(s))
-       copyString(buf, 0, s)
-       return &Buffer{buf: buf}
+       return &Buffer{buf: []byte(s)}
 }
index 53086a4df73a34224278e79544eb0529359ab364..1ba77493d6a672c489236a1e6c4202d83a3dfd6e 100644 (file)
@@ -132,7 +132,7 @@ func TestBasicOperations(t *testing.T) {
                buf.Truncate(0)
                check(t, "TestBasicOperations (3)", &buf, "")
 
-               n, err := buf.Write(Bytes(data[0:1]))
+               n, err := buf.Write([]byte(data[0:1]))
                if n != 1 {
                        t.Errorf("wrote 1 byte, but n == %d", n)
                }
@@ -144,7 +144,7 @@ func TestBasicOperations(t *testing.T) {
                buf.WriteByte(data[1])
                check(t, "TestBasicOperations (5)", &buf, "ab")
 
-               n, err = buf.Write(Bytes(data[2:26]))
+               n, err = buf.Write([]byte(data[2:26]))
                if n != 24 {
                        t.Errorf("wrote 25 bytes, but n == %d", n)
                }
index 458f407771da97a3ffa84f5f41c8f37133c99c42..62311d41d635ae100a6de5e64ee8e5a060f97e5e 100644 (file)
@@ -325,9 +325,7 @@ func Map(mapping func(rune int) int, s []byte) []byte {
                                // Grow the buffer.
                                maxbytes = maxbytes*2 + utf8.UTFMax
                                nb := make([]byte, maxbytes)
-                               for i, c := range b[0:nbytes] {
-                                       nb[i] = c
-                               }
+                               copy(nb, b[0:nbytes])
                                b = nb
                        }
                        nbytes += utf8.EncodeRune(rune, b[nbytes:maxbytes])
index a43708e0d88cee34f3f91dfad6eda5f6541fdaf1..6f42338eb8e2c30795abb141dbff78f9975f46d0 100644 (file)
@@ -416,21 +416,11 @@ var trimSpaceTests = []StringTest{
        {"x ☺ ", "x ☺"},
 }
 
-// Bytes returns a new slice containing the bytes in s.
-// Borrowed from strings to avoid dependency.
-func Bytes(s string) []byte {
-       b := make([]byte, len(s))
-       for i := 0; i < len(s); i++ {
-               b[i] = s[i]
-       }
-       return b
-}
-
 // Execute f on each test case.  funcName should be the name of f; it's used
 // in failure reports.
 func runStringTests(t *testing.T, f func([]byte) []byte, funcName string, testCases []StringTest) {
        for _, tc := range testCases {
-               actual := string(f(Bytes(tc.in)))
+               actual := string(f([]byte(tc.in)))
                if actual != tc.out {
                        t.Errorf("%s(%q) = %q; want %q", funcName, tc.in, actual, tc.out)
                }
@@ -463,7 +453,7 @@ func TestMap(t *testing.T) {
 
        // 1.  Grow.  This triggers two reallocations in Map.
        maxRune := func(rune int) int { return unicode.MaxRune }
-       m := Map(maxRune, Bytes(a))
+       m := Map(maxRune, []byte(a))
        expect := tenRunes(unicode.MaxRune)
        if string(m) != expect {
                t.Errorf("growing: expected %q got %q", expect, m)
@@ -471,21 +461,21 @@ func TestMap(t *testing.T) {
 
        // 2. Shrink
        minRune := func(rune int) int { return 'a' }
-       m = Map(minRune, Bytes(tenRunes(unicode.MaxRune)))
+       m = Map(minRune, []byte(tenRunes(unicode.MaxRune)))
        expect = a
        if string(m) != expect {
                t.Errorf("shrinking: expected %q got %q", expect, m)
        }
 
        // 3. Rot13
-       m = Map(rot13, Bytes("a to zed"))
+       m = Map(rot13, []byte("a to zed"))
        expect = "n gb mrq"
        if string(m) != expect {
                t.Errorf("rot13: expected %q got %q", expect, m)
        }
 
        // 4. Rot13^2
-       m = Map(rot13, Map(rot13, Bytes("a to zed")))
+       m = Map(rot13, Map(rot13, []byte("a to zed")))
        expect = "a to zed"
        if string(m) != expect {
                t.Errorf("rot13: expected %q got %q", expect, m)
@@ -498,7 +488,7 @@ func TestMap(t *testing.T) {
                }
                return -1
        }
-       m = Map(dropNotLatin, Bytes("Hello, 세계"))
+       m = Map(dropNotLatin, []byte("Hello, 세계"))
        expect = "Hello"
        if string(m) != expect {
                t.Errorf("drop: expected %q got %q", expect, m)
@@ -526,9 +516,7 @@ var addtests = []AddTest{
 func TestAdd(t *testing.T) {
        for _, test := range addtests {
                b := make([]byte, len(test.s), test.cap)
-               for i := 0; i < len(test.s); i++ {
-                       b[i] = test.s[i]
-               }
+               copy(b, test.s)
                b = Add(b, []byte(test.t))
                if string(b) != test.s+test.t {
                        t.Errorf("Add(%q,%q) = %q", test.s, test.t, string(b))
index 10235f54119258373015484c4e8ff9c96b898ca8..b0b8bf638e69e5444e84885970e311bf15c260c2 100644 (file)
@@ -27,7 +27,7 @@ func newCBC(c Cipher, iv []byte) *cbcCipher {
        x := new(cbcCipher)
        x.c = c
        x.blockSize = n
-       x.iv = copy(iv)
+       x.iv = dup(iv)
        x.tmp = make([]byte, n)
        return x
 }
index 177ae939d895f5151012bb5b4420947436fac0a9..2c84b32c5fc97403ce5de4d071632cf767315c96 100644 (file)
@@ -33,7 +33,7 @@ func newCFB(c Cipher, s int, iv []byte) *cfbCipher {
        x.c = c
        x.blockSize = s / 8
        x.cipherSize = b
-       x.iv = copy(iv)
+       x.iv = dup(iv)
        x.tmp = make([]byte, b)
        return x
 }
index 1b786cca49059236de50016e42350329088c3324..f95c7a76e319d9e580460eaccb73d3131e23deaa 100644 (file)
@@ -49,10 +49,8 @@ func same(p, q []byte) bool {
        return true
 }
 
-func copy(p []byte) []byte {
+func dup(p []byte) []byte {
        q := make([]byte, len(p))
-       for i, b := range p {
-               q[i] = b
-       }
+       copy(q, p)
        return q
 }
index 085ae05b18387a5101da66a65734319f28eaa86f..bb9aaaaa0ab9305f8e8565edf05ca0a415714bb0 100644 (file)
@@ -25,7 +25,7 @@ type ctrStream struct {
 func newCTRStream(c Cipher, ctr []byte) *ctrStream {
        x := new(ctrStream)
        x.c = c
-       x.ctr = copy(ctr)
+       x.ctr = dup(ctr)
        x.out = make([]byte, len(ctr))
        return x
 }
index cc3662787c789373ac725d6b725ae461541121ca..3f3b96431e70140c477caca8ac40a0735306b971 100644 (file)
@@ -45,8 +45,8 @@ func setupEAX(c Cipher, iv, hdr []byte, tagBytes int) (ctrIV, tag []byte, cmac h
        cmac.Write(buf) // 0
        cmac.Write(iv)
        sum := cmac.Sum()
-       ctrIV = copy(sum)
-       tag = copy(sum[0:tagBytes])
+       ctrIV = dup(sum)
+       tag = dup(sum[0:tagBytes])
 
        cmac.Reset()
        buf[n-1] = 1
@@ -237,8 +237,8 @@ func (x *eaxDecrypter) checkTag() os.Error {
        finishEAX(x.tag, x.cr.cmac)
        if !same(x.tag, x.cr.tag) {
                e := new(EAXTagError)
-               e.Computed = copy(x.tag)
-               e.Read = copy(x.cr.tag)
+               e.Computed = dup(x.tag)
+               e.Read = dup(x.cr.tag)
                return e
        }
        return nil
index 73d1d63f7168f1d8e179e248092f2e42ffdf8f41..cf09f7cb3fbda150b899fd96249a6d2be8c26d94 100644 (file)
@@ -127,9 +127,7 @@ func (x *ecbDecrypter) Read(p []byte) (n int, err os.Error) {
        // Save it for next time.
        if i < n {
                p = p[i:n]
-               for j, v := range p {
-                       x.buf[j] = v
-               }
+               copy(x.buf, p)
                x.crypt = x.buf[0:len(p)]
                n = i
        }
@@ -191,11 +189,7 @@ func (x *ecbEncrypter) slidePlain() {
        if len(x.plain) == 0 {
                x.plain = x.buf[0:0]
        } else if cap(x.plain) < cap(x.buf) {
-               // plain and buf share same data,
-               // but buf is before plain, so forward loop is correct
-               for i := 0; i < len(x.plain); i++ {
-                       x.buf[i] = x.plain[i]
-               }
+               copy(x.buf, x.plain)
                x.plain = x.buf[0:len(x.plain)]
        }
 }
index 0cd5e73c43e6c65b8ef99d02986a037a2e1c0cd0..11aaaa4d71947274496c85830ec43c38d8135dad 100644 (file)
@@ -29,7 +29,7 @@ func newOFBStream(c Cipher, iv []byte) *ofbStream {
        if n != c.BlockSize() {
                panic(fmt.Sprintln("crypto/block: newOFBStream: invalid iv size", n, "!=", c.BlockSize()))
        }
-       x.iv = copy(iv)
+       x.iv = dup(iv)
        return x
 }
 
index adbdf29e7c96ebea7961231cdcdfcb4cdc2cb937..e13c986e68637ee372b2243524db2d02ede4192f 100644 (file)
@@ -68,10 +68,7 @@ func (d *digest) Write(p []byte) (nn int, err os.Error) {
        n := _Block(d, p)
        p = p[n:]
        if len(p) > 0 {
-               for i, x := range p {
-                       d.x[i] = x
-               }
-               d.nx = len(p)
+               d.nx = copy(d.x[:], p)
        }
        return
 }
index a8333765129949a1fbf2ceaf3f522f1e1010b09b..54fddb63b93672468800606b07956294b1c89784 100644 (file)
@@ -68,10 +68,7 @@ func (d *digest) Write(p []byte) (nn int, err os.Error) {
        n := _Block(d, p)
        p = p[n:]
        if len(p) > 0 {
-               for i, x := range p {
-                       d.x[i] = x
-               }
-               d.nx = len(p)
+               d.nx = copy(d.x[:], p)
        }
        return
 }
index 5d55198424c8870b1714eee1379279767dc5babb..5614f1360ebd441289b819398f6a653e6ae417af 100644 (file)
@@ -72,10 +72,7 @@ func (d *digest) Write(p []byte) (nn int, err os.Error) {
        n := _Block(d, p)
        p = p[n:]
        if len(p) > 0 {
-               for i, x := range p {
-                       d.x[i] = x
-               }
-               d.nx = len(p)
+               d.nx = copy(d.x[:], p)
        }
        return
 }
index 681870a2185015ebd2ce6dbdf6bb350f1e462a4f..8716c3591074b4845388926d97ed74f8755597b7 100644 (file)
@@ -70,10 +70,7 @@ func (d *digest) Write(p []byte) (nn int, err os.Error) {
        n := _Block(d, p)
        p = p[n:]
        if len(p) > 0 {
-               for i, x := range p {
-                       d.x[i] = x
-               }
-               d.nx = len(p)
+               d.nx = copy(d.x[:], p)
        }
        return
 }
index df00a72985e60e6f73422f4ce6e415a109756613..57a8ffa0d76c5afac4ebe5296287378f1af9e59f 100644 (file)
@@ -112,10 +112,7 @@ func (d *digest) Write(p []byte) (nn int, err os.Error) {
        n := _Block(d, p)
        p = p[n:]
        if len(p) > 0 {
-               for i, x := range p {
-                       d.x[i] = x
-               }
-               d.nx = len(p)
+               d.nx = copy(d.x[:], p)
        }
        return
 }
index 21b030563d59b57a76bea0d4b55757360a3ca613..c3cda97d9681f469da8ad5a25fe7d38915c4605f 100644 (file)
@@ -112,10 +112,7 @@ func (d *digest) Write(p []byte) (nn int, err os.Error) {
        n := _Block(d, p)
        p = p[n:]
        if len(p) > 0 {
-               for i, x := range p {
-                       d.x[i] = x
-               }
-               d.nx = len(p)
+               d.nx = copy(d.x[:], p)
        }
        return
 }
index 4005bf0b629df3c1df414fcade9eade9892170c7..327a5de2efee968fdc9e8c016dd4e032ccf316de 100644 (file)
@@ -504,9 +504,7 @@ func parsePublicKey(algo PublicKeyAlgorithm, asn1Data []byte) (interface{}, os.E
 func appendString(in []string, v string) (out []string) {
        if cap(in)-len(in) < 1 {
                out = make([]string, len(in)+1, len(in)*2+1)
-               for i, v := range in {
-                       out[i] = v
-               }
+               copy(out, in)
        } else {
                out = in[0 : len(in)+1]
        }
index 5d4a516539f0dcd2157d5d8ae58584efd003bfa4..dc2e8b116d2486148900fff9dcc82c9db2cba3bf 100644 (file)
@@ -454,9 +454,7 @@ func (d *Data) Type(off Offset) (Type, os.Error) {
                                n := len(t.Field)
                                if n >= cap(t.Field) {
                                        fld := make([]*StructField, n, n*2)
-                                       for i, f := range t.Field {
-                                               fld[i] = f
-                                       }
+                                       copy(fld, t.Field)
                                        t.Field = fld
                                }
                                t.Field = t.Field[0 : n+1]
@@ -505,9 +503,7 @@ func (d *Data) Type(off Offset) (Type, os.Error) {
                                n := len(t.Val)
                                if n >= cap(t.Val) {
                                        val := make([]*EnumValue, n, n*2)
-                                       for i, f := range t.Val {
-                                               val[i] = f
-                                       }
+                                       copy(val, t.Val)
                                        t.Val = val
                                }
                                t.Val = t.Val[0 : n+1]
@@ -561,9 +557,7 @@ func (d *Data) Type(off Offset) (Type, os.Error) {
                        n := len(t.ParamType)
                        if n >= cap(t.ParamType) {
                                param := make([]Type, n, n*2)
-                               for i, t := range t.ParamType {
-                                       param[i] = t
-                               }
+                               copy(param, t.ParamType)
                                t.ParamType = param
                        }
                        t.ParamType = t.ParamType[0 : n+1]
index 246dad8e7879ffcaf597146a873e4f9d32ba1056..4664f0190debd6f3582edaa9f42684739bcd6036 100644 (file)
@@ -306,9 +306,7 @@ func (f *File) pushSection(sh *Section, r io.ReaderAt) {
        if n >= cap(f.Sections) {
                m := (n + 1) * 2
                new := make([]*Section, n, m)
-               for i, sh := range f.Sections {
-                       new[i] = sh
-               }
+               copy(new, f.Sections)
                f.Sections = new
        }
        f.Sections = f.Sections[0 : n+1]
index 271af78e270e67aa24a95ce608f77cd58e64028e..ccc0d0051fd5b990c11713aa4aa581821826234c 100644 (file)
@@ -65,9 +65,7 @@ func audioServer() {
                        println(n, len(b)*2)
                }
                a := make([]uint16, n/2)
-               for i := range b {
-                       a[i] = b[i]
-               }
+               copy(a, b)
                n, err = av.AudioStream(a)
        }
 }
index 2cde189692ab3d422565d0fa96ac2c445166ffed..823f240188c6583d833d895c915904d9274472a3 100644 (file)
@@ -1174,12 +1174,8 @@ func (a *exprInfo) compileCallExpr(b *block, l *expr, as []*expr) *expr {
 
        // Gather argument and out types to initialize frame variables
        vts := make([]Type, nin+nout)
-       for i, t := range lt.In {
-               vts[i] = t
-       }
-       for i, t := range lt.Out {
-               vts[i+nin] = t
-       }
+       copy(vts, lt.In)
+       copy(vts[nin:], lt.Out)
 
        // Compile
        lf := l.asFunc()
index e672d0783e24a7b423c5c61d3a29d3b7db2bcebc..777f7e5f64e1af02b588efc11a562ec98d3d32fd 100644 (file)
@@ -46,9 +46,7 @@ func (b *codeBuf) push(instr func(*Thread)) {
        n := len(b.instrs)
        if n >= cap(b.instrs) {
                a := make(code, n, n*2)
-               for i := range b.instrs {
-                       a[i] = b.instrs[i]
-               }
+               copy(a, b.instrs)
                b.instrs = a
        }
        b.instrs = b.instrs[0 : n+1]
@@ -60,9 +58,7 @@ func (b *codeBuf) nextPC() uint { return uint(len(b.instrs)) }
 func (b *codeBuf) get() code {
        // Freeze this buffer into an array of exactly the right size
        a := make(code, len(b.instrs))
-       for i := range b.instrs {
-               a[i] = b.instrs[i]
-       }
+       copy(a, b.instrs)
        return code(a)
 }
 
index 534bc3587cc7e4bd44c12ec701097b3090ce1134..6c465dd727e441a76c581701b1da31febb27ceb6 100644 (file)
@@ -870,9 +870,7 @@ func NewInterfaceType(methods []IMethod, embeds []*InterfaceType) *InterfaceType
 
        // Combine methods
        allMethods := make([]IMethod, nMethods)
-       for i, m := range methods {
-               allMethods[i] = m
-       }
+       copy(allMethods, methods)
        n := len(methods)
        for _, e := range embeds {
                for _, m := range e.methods {
index fe36dbdeb5b939d0e9158baad12d13b9c2c5da6a..92601ed373075e9e5521aa2136ed4260a73bda46 100644 (file)
@@ -126,9 +126,7 @@ func (r *msgReceiver) recv() (*msg, os.Error) {
        // The system call *did* update r.hdr.ndesc.
        if r.hdr.ndesc > 0 {
                m.rdesc = make([]int32, r.hdr.ndesc)
-               for i := range m.rdesc {
-                       m.rdesc[i] = r.desc[i]
-               }
+               copy(m.rdesc, r.desc)
        }
 
        return m, nil
@@ -253,9 +251,7 @@ func (m *msg) wbytes(p []byte) { copy(m.grow(len(p)), p) }
 
 func (m *msg) wstring(s string) {
        b := m.grow(len(s))
-       for i := range b {
-               b[i] = s[i]
-       }
+       copy(b, s)
 }
 
 // Parsing of RPC header and arguments.
index 433484b4eaf46cf1ce5e88740d04c528793e6cca..0abc6df4189bf511ef6f719b4bb2636ddd2def3d 100644 (file)
@@ -56,9 +56,7 @@ func Add(name, fmt string, handler Handler) {
        n := len(rpcMethod)
        if n >= cap(rpcMethod) {
                a := make([]method, n, (n+4)*2)
-               for i := range a {
-                       a[i] = rpcMethod[i]
-               }
+               copy(a, rpcMethod)
                rpcMethod = a
        }
        rpcMethod = rpcMethod[0 : n+1]
index a3aa22f9f409454bdcee7cb77f389cceb24659c0..2c59c79fc9397c60f6c343aafffc4519d82dce03 100644 (file)
@@ -396,9 +396,7 @@ func (p *Process) postEvent(ev Event) {
                m = 4
        }
        posted := make([]Event, n+1, m)
-       for i, p := range p.posted {
-               posted[i] = p
-       }
+       copy(posted, p.posted)
        posted[n] = ev
        p.posted = posted
 }
index 6f044ee6890ca18f7b472113ffdd78018ebfddbb..39950525adfdb1a538786bbb6700715a2f398c34 100644 (file)
@@ -277,11 +277,9 @@ func (doc *docReader) addDecl(decl ast.Decl) {
 
 
 func copyCommentList(list []*ast.Comment) []*ast.Comment {
-       copy := make([]*ast.Comment, len(list))
-       for i, c := range list {
-               copy[i] = c
-       }
-       return copy
+       nlist := make([]*ast.Comment, len(list))
+       copy(nlist, list)
+       return nlist
 }
 
 
index 1d1b62eebb5c1e3c107887764184cd07a863d894..dc195caf8015e5adb2f7e62faa4d89976d13889d 100644 (file)
@@ -430,10 +430,7 @@ func packStructValue(val *reflect.StructValue, msg []byte, off int) (off1 int, o
                                }
                                msg[off] = byte(len(s))
                                off++
-                               for i := 0; i < len(s); i++ {
-                                       msg[off+i] = s[i]
-                               }
-                               off += len(s)
+                               off += copy(msg[off:], s)
                        }
                }
        }
index f9f51221daeb78a08c54f13af24d045bab68d651..a512190bb5cba48001e665f456a11b7a6f70f1df 100644 (file)
@@ -66,9 +66,7 @@ func (file *File) Readdirnames(count int) (names []string, err Error) {
                        count--
                        if len(names) == cap(names) {
                                nnames := make([]string, len(names), 2*len(names))
-                               for i := 0; i < len(names); i++ {
-                                       nnames[i] = names[i]
-                               }
+                               copy(nnames, names)
                                names = nnames
                        }
                        names = names[0 : len(names)+1]
index b32c474e6923ae812fcbdcd297e6aa9499f5f019..9c4b4469945a1956052f219da0fd6c700ed50c73 100644 (file)
@@ -61,9 +61,7 @@ func (file *File) Readdirnames(count int) (names []string, err Error) {
                        count--
                        if len(names) == cap(names) {
                                nnames := make([]string, len(names), 2*len(names))
-                               for i := 0; i < len(names); i++ {
-                                       nnames[i] = names[i]
-                               }
+                               copy(nnames, names)
                                names = nnames
                        }
                        names = names[0 : len(names)+1]
index 42cc88a8a7792dba1ac914433178ba4f497119a9..2177625e2d09a8addb0d11407ab5707d701b6aac 100644 (file)
@@ -64,9 +64,7 @@ func (file *File) Readdirnames(count int) (names []string, err Error) {
                        count--
                        if len(names) == cap(names) {
                                nnames := make([]string, len(names), 2*len(names))
-                               for i := 0; i < len(names); i++ {
-                                       nnames[i] = names[i]
-                               }
+                               copy(nnames, names)
                                names = nnames
                        }
                        names = names[0 : len(names)+1]
index 42cc88a8a7792dba1ac914433178ba4f497119a9..2177625e2d09a8addb0d11407ab5707d701b6aac 100644 (file)
@@ -64,9 +64,7 @@ func (file *File) Readdirnames(count int) (names []string, err Error) {
                        count--
                        if len(names) == cap(names) {
                                nnames := make([]string, len(names), 2*len(names))
-                               for i := 0; i < len(names); i++ {
-                                       nnames[i] = names[i]
-                               }
+                               copy(nnames, names)
                                names = nnames
                        }
                        names = names[0 : len(names)+1]
index 557f5c03b89aa86c3cca38689cb8dc75ab3fe622..ed344815551511d41bcb886bcf205e553f9790e9 100644 (file)
@@ -89,9 +89,7 @@ func Environ() []string {
                        }
                        if len(r) == cap(r) {
                                nr := make([]string, len(r), 2*len(r))
-                               for k := 0; k < len(r); k++ {
-                                       nr[k] = r[k]
-                               }
+                               copy(nr, r)
                                r = nr
                        }
                        r = r[0 : len(r)+1]
index d5978a83c32f77c0e7d6f3be8dc9a6019bc44f78..f13911ad82a02a99c9626e09d8f81a73768f4947 100644 (file)
@@ -159,9 +159,7 @@ func (file *File) Readdir(count int) (fi []FileInfo, err Error) {
                count--
                if len(fi) == cap(fi) {
                        nfi := make([]FileInfo, len(fi), 2*len(fi))
-                       for i := 0; i < len(fi); i++ {
-                               nfi[i] = fi[i]
-                       }
+                       copy(nfi, fi)
                        fi = nfi
                }
                fi = fi[0 : len(fi)+1]
index a9d46dd1bcc43f875373d55913ed49e571c682dd..506f434fe7bc9334d6bb05021f852ee80d50024d 100644 (file)
@@ -23,10 +23,7 @@ type StringReader struct {
 func (r *StringReader) Read(p []byte) (n int, err os.Error) {
        if r.step < len(r.data) {
                s := r.data[r.step]
-               for i := 0; i < len(s); i++ {
-                       p[i] = s[i]
-               }
-               n = len(s)
+               n = copy(p, s)
                r.step++
        } else {
                err = os.EOF
index 6fbf67b3e6076b8dc2c6b91c094b6b74a1770151..431e3f82ea802f1448476256ada5944508b9df75 100644 (file)
@@ -527,21 +527,10 @@ func Replace(s, old, new string, n int) string {
                } else {
                        j += Index(s[start:], old)
                }
-               w += copyString(t[w:], s[start:j])
-               w += copyString(t[w:], new)
+               w += copy(t[w:], s[start:j])
+               w += copy(t[w:], new)
                start = j + len(old)
        }
-       w += copyString(t[w:], s[start:])
+       w += copy(t[w:], s[start:])
        return string(t[0:w])
 }
-
-func copyString(dst []byte, src string) int {
-       n := len(dst)
-       if n > len(src) {
-               n = len(src)
-       }
-       for i := 0; i < n; i++ {
-               dst[i] = src[i]
-       }
-       return n
-}
index 46f5c98764de7bb37ff0d79888859432a2ae0567..b7761a699ed9860129809463011562d2b8721abf 100644 (file)
@@ -21,9 +21,7 @@ func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
 // containing the text of s.
 func StringByteSlice(s string) []byte {
        a := make([]byte, len(s)+1)
-       for i := 0; i < len(s); i++ {
-               a[i] = s[i]
-       }
+       copy(a, s)
        return a
 }
 
index 455b6ccb915383b943261da4d547cc675c4d16ac..a575ce1af0c919f77b98af97816bc37c11c3fbfc 100644 (file)
@@ -320,9 +320,7 @@ func words(buf []byte) []string {
                }
                if i == cap(s) {
                        ns := make([]string, 2*cap(s))
-                       for j := range s {
-                               ns[j] = s[j]
-                       }
+                       copy(ns, s)
                        s = ns
                }
                s = s[0 : i+1]
index 76baf1ec06edc4049e08e5dff25e99f419171733..8f15b276254a662bc5b5ba516658c6841533d1c0 100644 (file)
@@ -170,9 +170,7 @@ func (cclass *_CharClass) addRange(a, b int) {
        n := len(cclass.ranges)
        if n >= cap(cclass.ranges) {
                nr := make([]int, n, 2*n)
-               for i, j := range nr {
-                       nr[i] = j
-               }
+               copy(nr, cclass.ranges)
                cclass.ranges = nr
        }
        cclass.ranges = cclass.ranges[0 : n+2]
@@ -255,9 +253,7 @@ func (re *Regexp) add(i instr) instr {
        i.setIndex(len(re.inst))
        if n >= cap(re.inst) {
                ni := make([]instr, n, 2*n)
-               for i, j := range re.inst {
-                       ni[i] = j
-               }
+               copy(ni, re.inst)
                re.inst = ni
        }
        re.inst = re.inst[0 : n+1]
index 4fc41cdea0211ed82dd8a7c00f21dd9b46f68a6e..102b034a54fa8c27a41582c5966aa343c734106a 100644 (file)
@@ -496,9 +496,7 @@ func parseScript(line string, scripts map[string][]Script) {
        s, ok := scripts[name]
        if !ok || len(s) == cap(s) {
                ns := make([]Script, len(s), len(s)+100)
-               for i, sc := range s {
-                       ns[i] = sc
-               }
+               copy(ns, s)
                s = ns
        }
        s = s[0 : len(s)+1]
index 0a43393eccb175268e9283846db2f12e8e01cadb..eed9355547c6d4a3b97671b4fb3ca823e0ea3d1c 100644 (file)
@@ -595,9 +595,7 @@ func (p *Parser) RawToken() (Token, os.Error) {
                n := len(attr)
                if n >= cap(attr) {
                        nattr := make([]Attr, n, 2*cap(attr))
-                       for i, a := range attr {
-                               nattr[i] = a
-                       }
+                       copy(nattr, attr)
                        attr = nattr
                }
                attr = attr[0 : n+1]