Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
---
 builtin/unpack-objects.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
index 6fc72c1..044a087 100644
--- a/builtin/unpack-objects.c
+++ b/builtin/unpack-objects.c
@@ -54,6 +54,9 @@ static void add_object_buffer(struct object *object, char 
*buffer, unsigned long
                die("object %s tried to add buffer twice!", 
sha1_to_hex(object->sha1));
 }
 
+static struct strbuf back_buffer = STRBUF_INIT;
+static int save_to_back_buffer;
+
 /*
  * Make sure at least "min" bytes are available in the buffer, and
  * return the pointer to the buffer.
@@ -66,6 +69,8 @@ static void *fill(int min)
                die("cannot fill %d bytes", min);
        if (offset) {
                git_SHA1_Update(&ctx, buffer, offset);
+               if (save_to_back_buffer)
+                       strbuf_add(&back_buffer, buffer, offset);
                memmove(buffer, buffer + offset, len);
                offset = 0;
        }
@@ -81,6 +86,18 @@ static void *fill(int min)
        return buffer;
 }
 
+static void copy_back_buffer(int set)
+{
+       if (offset) {
+               git_SHA1_Update(&ctx, buffer, offset);
+               if (save_to_back_buffer)
+                       strbuf_add(&back_buffer, buffer, offset);
+               memmove(buffer, buffer + offset, len);
+               offset = 0;
+       }
+       save_to_back_buffer = set;
+}
+
 static void use(int bytes)
 {
        if (bytes > len)
-- 
1.8.2.82.gc24b958

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to