diff options
author | Javi Fontan <jfontan@gmail.com> | 2018-01-24 18:32:16 +0100 |
---|---|---|
committer | Javi Fontan <jfontan@gmail.com> | 2018-01-24 18:38:59 +0100 |
commit | 522327b572276fe94e76ff9bb5e41b1efdf69dee (patch) | |
tree | ed78c69b60e9c6cfb939a712077bd6f32776870c /plumbing/format/packfile/encoder.go | |
parent | 834cd6f46fa3a3f2b5423f717cc72769e27c915b (diff) | |
download | go-git-522327b572276fe94e76ff9bb5e41b1efdf69dee.tar.gz |
plumbing: format/packfile, fix crash with cycle deltas
Resolving cycles relied on ObjectToPack objects having Original. This
is no longer true with the changes from #720. This commit changes:
* Save original type, hash and size in ObjectToPack
* Use SetObject to set both Original and resolved type, hash and size
* Restore original object before using BackToOriginal (cycle resolution)
* Update encoder test to check this case
Signed-off-by: Javi Fontan <jfontan@gmail.com>
Diffstat (limited to 'plumbing/format/packfile/encoder.go')
-rw-r--r-- | plumbing/format/packfile/encoder.go | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/plumbing/format/packfile/encoder.go b/plumbing/format/packfile/encoder.go index 6686dd5..b077918 100644 --- a/plumbing/format/packfile/encoder.go +++ b/plumbing/format/packfile/encoder.go @@ -87,6 +87,7 @@ func (e *Encoder) entry(o *ObjectToPack) error { // (for example due to a concurrent repack) and a different base // was chosen, forcing a cycle. Select something other than a // delta, and write this object. + e.selector.restoreOriginal(o) o.BackToOriginal() } |