From 17d2a9c4353252caf304733b134fb347f4af4e78 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Fri, 2 Mar 2018 02:17:04 -0500 Subject: vendor: update github.com/gogits/git-module --- vendor/github.com/gogits/git-module/blob.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'vendor/github.com') diff --git a/vendor/github.com/gogits/git-module/blob.go b/vendor/github.com/gogits/git-module/blob.go index 478682e7..7731226d 100644 --- a/vendor/github.com/gogits/git-module/blob.go +++ b/vendor/github.com/gogits/git-module/blob.go @@ -18,11 +18,16 @@ type Blob struct { // Data gets content of blob all at once and wrap it as io.Reader. // This can be very slow and memory consuming for huge content. func (b *Blob) Data() (io.Reader, error) { - stdout, err := NewCommand("show", b.ID.String()).RunInDirBytes(b.repo.Path) - if err != nil { - return nil, err + stdout := new(bytes.Buffer) + stderr := new(bytes.Buffer) + + // Preallocate memory to save ~50% memory usage on big files. + stdout.Grow(int(b.Size() + 2048)) + + if err := b.DataPipeline(stdout, stderr); err != nil { + return nil, concatenateError(err, stderr.String()) } - return bytes.NewBuffer(stdout), nil + return stdout, nil } func (b *Blob) DataPipeline(stdout, stderr io.Writer) error { -- cgit v1.2.3