diff options
| author | Carlos Martín Nieto <carlos@cmartin.tk> | 2011-10-06 00:51:32 +0200 |
|---|---|---|
| committer | Vicent Marti <tanoku@gmail.com> | 2011-10-12 21:33:19 +0200 |
| commit | 8c2528748d6e0671a61ce729318a9f4e44f51111 (patch) | |
| tree | f0f34071c0b8a846fcaed6d5d2f73da056558970 /src/transport-http.c | |
| parent | 546a3c8f9e87c632ea1bc44c32457ec7adee0741 (diff) | |
| download | libgit2-8c2528748d6e0671a61ce729318a9f4e44f51111.tar.gz | |
net: plug a few memory leaks
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
Diffstat (limited to 'src/transport-http.c')
| -rw-r--r-- | src/transport-http.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/transport-http.c b/src/transport-http.c index 13a95dbc5..3426b34e1 100644 --- a/src/transport-http.c +++ b/src/transport-http.c @@ -389,15 +389,20 @@ static int on_body_parse_response(http_parser *parser, const char *str, size_t l git_buf_consume(buf, line_end); if (pkt->type == GIT_PKT_PACK) { + free(pkt); t->pack_ready = 1; return 0; } - if (pkt->type == GIT_PKT_NAK) + if (pkt->type == GIT_PKT_NAK) { + free(pkt); return 0; + } - if (pkt->type != GIT_PKT_ACK) + if (pkt->type != GIT_PKT_ACK) { + free(pkt); continue; + } error = git_vector_insert(common, pkt); if (error < GIT_SUCCESS) @@ -596,6 +601,8 @@ static int http_negotiate_fetch(git_transport *transport, git_repository *repo, } while(1); cleanup: + git_buf_free(&request); + git_buf_free(&data); git_revwalk_free(walk); return error; } @@ -722,6 +729,7 @@ static void http_free(git_transport *transport) { transport_http *t = (transport_http *) transport; git_vector *refs = &t->refs; + git_vector *common = &t->common; unsigned int i; git_pkt *p; @@ -737,6 +745,10 @@ static void http_free(git_transport *transport) git_pkt_free(p); } git_vector_free(refs); + git_vector_foreach(common, i, p) { + git_pkt_free(p); + } + git_vector_free(common); git_buf_free(&t->buf); free(t->heads); free(t->content_type); |
