diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2016-08-29 22:49:00 +0200 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2016-08-29 22:49:00 +0200 |
commit | dd4af03ad368cc50dd08912010f5b667bd7569cd (patch) | |
tree | db8a4dbe49e534b2215a74866de5e229a06fc3b0 | |
parent | 5cf20a4edf7803458a1c2ec94e902369bed76f28 (diff) | |
download | go-git-dd4af03ad368cc50dd08912010f5b667bd7569cd.tar.gz |
core: MemoryObject.Write, remove SetSize side effect
-rw-r--r-- | core/memory.go | 1 | ||||
-rw-r--r-- | tree.go | 18 |
2 files changed, 15 insertions, 4 deletions
diff --git a/core/memory.go b/core/memory.go index 8826966..3d8063d 100644 --- a/core/memory.go +++ b/core/memory.go @@ -50,7 +50,6 @@ func (o *MemoryObject) Writer() (ObjectWriter, error) { func (o *MemoryObject) Write(p []byte) (n int, err error) { o.cont = append(o.cont, p...) - o.sz = int64(len(o.cont)) return len(p), nil } @@ -218,18 +218,30 @@ func (t *Tree) Encode(o core.Object) error { if err != nil { return err } + + var size int defer checkClose(w, &err) for _, entry := range t.Entries { - if _, err = fmt.Fprintf(w, "%o %s", entry.Mode, entry.Name); err != nil { + n, err := fmt.Fprintf(w, "%o %s", entry.Mode, entry.Name) + if err != nil { return err } - if _, err = w.Write([]byte{0x00}); err != nil { + + size += n + n, err = w.Write([]byte{0x00}) + if err != nil { return err } - if _, err = w.Write([]byte(entry.Hash[:])); err != nil { + + size += n + n, err = w.Write([]byte(entry.Hash[:])) + if err != nil { return err } + size += n } + + o.SetSize(int64(size)) return err } |