summaryrefslogtreecommitdiff
path: root/xdelta3/go/src/xdelta/rstream.go
diff options
context:
space:
mode:
Diffstat (limited to 'xdelta3/go/src/xdelta/rstream.go')
-rw-r--r--xdelta3/go/src/xdelta/rstream.go20
1 files changed, 11 insertions, 9 deletions
diff --git a/xdelta3/go/src/xdelta/rstream.go b/xdelta3/go/src/xdelta/rstream.go
index 1666934..1d56031 100644
--- a/xdelta3/go/src/xdelta/rstream.go
+++ b/xdelta3/go/src/xdelta/rstream.go
@@ -16,20 +16,21 @@ func WriteRstreams(seed, offset, len int64,
16 go writeOne(seed, offset, len, second) 16 go writeOne(seed, offset, len, second)
17} 17}
18 18
19func writeOne(seed, offset, len int64, stream io.WriteCloser) { 19func writeOne(seed, offset, len int64, stream io.WriteCloser) error {
20 if offset != 0 { 20 if offset != 0 {
21 // Fill with other random data until the offset 21 // Fill with other random data until the offset
22 writeRand(rand.New(rand.NewSource(^seed)), 22 if err := writeRand(rand.New(rand.NewSource(^seed)), offset, stream); err != nil {
23 offset, stream) 23 return err
24 }
24 } 25 }
25 writeRand(rand.New(rand.NewSource(seed)), 26 if err := writeRand(rand.New(rand.NewSource(seed)),
26 len - offset, stream) 27 len - offset, stream); err != nil {
27 if err := stream.Close(); err != nil { 28 return err
28 panic(err)
29 } 29 }
30 return stream.Close()
30} 31}
31 32
32func writeRand(r *rand.Rand, len int64, s io.Writer) { 33func writeRand(r *rand.Rand, len int64, s io.Writer) error {
33 blk := make([]byte, blocksize) 34 blk := make([]byte, blocksize)
34 for len > 0 { 35 for len > 0 {
35 fillRand(r, blk) 36 fillRand(r, blk)
@@ -38,10 +39,11 @@ func writeRand(r *rand.Rand, len int64, s io.Writer) {
38 c = int(len) 39 c = int(len)
39 } 40 }
40 if _, err := s.Write(blk[0:c]); err != nil { 41 if _, err := s.Write(blk[0:c]); err != nil {
41 panic(err) 42 return err
42 } 43 }
43 len -= int64(c) 44 len -= int64(c)
44 } 45 }
46 return nil
45} 47}
46 48
47func fillRand(r *rand.Rand, blk []byte) { 49func fillRand(r *rand.Rand, blk []byte) {