On Mon, Aug 1, 2011 at 17:39, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
Show 9 quoted lines
> On Mon, Aug 1, 2011 at 17:22, Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote:
>> In case anyone would like to look into this I had this undiagnosed
>> free() error from git-remote-http in git version 1.7.2.1:
>
> Actually this is still an issue in master, CC-ing Tay who introduced
> this error.
>
> This evil hack would get around it most of the time, but would
> introduce another race condition:
*brainfart*. This would be better:
diff --git a/http.c b/http.c
index a1ea3db..c5da23a 100644
--- a/http.c
+++ b/http.c
@@ -1298,7 +1298,7 @@ struct http_object_request
*new_http_object_request(const char *base_url,
if (ftruncate(freq->localfile, 0) < 0) {
error("Couldn't truncate temporary
file %s: %s",
freq->tmpfile, strerror(errno));
- goto abort;
+ goto abort_url;
}
}
}
@@ -1328,9 +1328,10 @@ struct http_object_request
*new_http_object_request(const char *base_url, return freq;
+abort_url:
+ free(freq->url);
abort:
free(filename);
- free(freq->url);
free(freq);
return NULL;
}