{"thread":{"id":"1406","subject":"[PATCH] Plug memory leaks in git-unpack-objects","startedAt":"2005-08-03T12:11:00Z","lastAt":"2005-08-03T12:11:00Z","messageCount":1,"participants":["Sergey Vlasov"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"6749","messageId":"20050803121100.GD11605@procyon.home","threadId":"1406","inReplyTo":null,"subject":"[PATCH] Plug memory leaks in git-unpack-objects","fromName":"Sergey Vlasov","fromEmail":"vsu@altlinux.ru","sentAt":"2005-08-03T12:11:00Z","receivedAt":"2005-08-03T12:11:00Z","isPatch":true,"sender":{"key":"vsu@altlinux.ru","avatar":"https://avatars.githubusercontent.com/u/616082?v=4"},"body":"- Call inflateEnd to release zlib state after use.\n- After resolving delta, free base object data.\n\nSigned-off-by: Sergey Vlasov <vsu@altlinux.ru>\n---\n\n unpack-objects.c |    6 +++++-\n 1 files changed, 5 insertions(+), 1 deletions(-)\n\n890ab530c0c0aad5c070690498d3b1254c7a30bc\ndiff --git a/unpack-objects.c b/unpack-objects.c\n--- a/unpack-objects.c\n+++ b/unpack-objects.c\n@@ -75,6 +75,7 @@ static void *get_data(unsigned long size\n \t\tstream.next_in = fill(1);\n \t\tstream.avail_in = len;\n \t}\n+\tinflateEnd(&stream);\n \treturn buf;\n }\n \n@@ -167,6 +168,7 @@ static int unpack_delta_entry(unsigned l\n \tunsigned long base_size;\n \tchar type[20];\n \tunsigned char base_sha1[20];\n+\tint result;\n \n \tmemcpy(base_sha1, fill(20), 20);\n \tuse(20);\n@@ -184,7 +186,9 @@ static int unpack_delta_entry(unsigned l\n \tbase = read_sha1_file(base_sha1, type, &base_size);\n \tif (!base)\n \t\tdie(\"failed to read delta-pack base object %s\", sha1_to_hex(base_sha1));\n-\treturn resolve_delta(type, base, base_size, delta_data, delta_size);\n+\tresult = resolve_delta(type, base, base_size, delta_data, delta_size);\n+\tfree(base);\n+\treturn result;\n }\n \n static void unpack_one(unsigned nr, unsigned total)\n"}]}