{"thread":{"id":"5390","subject":"[PATCH 2/5] Reuse compression code in unpack_compressed_entry.","startedAt":"2006-08-26T08:11:02Z","lastAt":"2006-08-26T08:11:02Z","messageCount":1,"participants":["Shawn Pearce"],"isPatch":true,"patchVersion":1,"patchTotal":5},"messages":[{"id":"25926","messageId":"20060826081102.GD22343@spearce.org","threadId":"5390","inReplyTo":null,"subject":"[PATCH 2/5] Reuse compression code in unpack_compressed_entry.","fromName":"Shawn Pearce","fromEmail":"spearce@spearce.org","sentAt":"2006-08-26T08:11:02Z","receivedAt":"2006-08-26T08:11:02Z","isPatch":true,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"[PATCH 2/5] Reuse compression code in unpack_compressed_entry.\n\nThis cleans up the code by reusing a perfectly good decompression\nimplementation at the expense of 1 extra byte of memory allocated in\ntemporary memory while the delta is being decompressed and applied\nto the base.\n\nSigned-off-by: Shawn O. Pearce <spearce@spearce.org>\n---\n sha1_file.c |   25 ++++---------------------\n 1 files changed, 4 insertions(+), 21 deletions(-)\n\ndiff --git a/sha1_file.c b/sha1_file.c\nindex 024b605..fd3e01b 100644\n--- a/sha1_file.c\n+++ b/sha1_file.c\n@@ -1092,10 +1092,8 @@ static void *unpack_delta_entry(unsigned\n \t\t\t\tstruct packed_git *p)\n {\n \tstruct pack_entry base_ent;\n-\tvoid *data, *delta_data, *result, *base;\n-\tunsigned long data_size, result_size, base_size;\n-\tz_stream stream;\n-\tint st;\n+\tvoid *delta_data, *result, *base;\n+\tunsigned long result_size, base_size;\n \n \tif (left < 20)\n \t\tdie(\"truncated pack file\");\n@@ -1109,23 +1107,8 @@ static void *unpack_delta_entry(unsigned\n \t\tdie(\"failed to read delta-pack base object %s\",\n \t\t    sha1_to_hex(base_sha1));\n \n-\tdata = base_sha1 + 20;\n-\tdata_size = left - 20;\n-\tdelta_data = xmalloc(delta_size);\n-\n-\tmemset(&stream, 0, sizeof(stream));\n-\n-\tstream.next_in = data;\n-\tstream.avail_in = data_size;\n-\tstream.next_out = delta_data;\n-\tstream.avail_out = delta_size;\n-\n-\tinflateInit(&stream);\n-\tst = inflate(&stream, Z_FINISH);\n-\tinflateEnd(&stream);\n-\tif ((st != Z_STREAM_END) || stream.total_out != delta_size)\n-\t\tdie(\"delta data unpack failed\");\n-\n+\tdelta_data = unpack_compressed_entry(base_sha1 + 20,\n+\t\t\t     delta_size, left - 20);\n \tresult = patch_delta(base, base_size,\n \t\t\t     delta_data, delta_size,\n \t\t\t     &result_size);\n-- \n1.4.2.g6580\n"}]}