diff options
| author | Carlos Martín Nieto <carlos@cmartin.tk> | 2011-06-08 23:38:22 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <carlos@cmartin.tk> | 2011-06-26 18:18:13 +0200 |
| commit | be9fe679fc86a8f233b0a6fc6078894edcb8661e (patch) | |
| tree | 4eb63e0fffb66400830b050cb5c50fd3139b8a69 | |
| parent | ecb6ca0e1f908c1480a602e8cca16bd8916b8a99 (diff) | |
| download | libgit2-be9fe679fc86a8f233b0a6fc6078894edcb8661e.tar.gz | |
Implement and use git_pkt_free
A git_pkt object can be one of several structs. Add this function for
convenience and clarity.
Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
| -rw-r--r-- | include/git2/pkt.h | 1 | ||||
| -rw-r--r-- | src/pkt.c | 11 | ||||
| -rw-r--r-- | src/transport_git.c | 7 |
3 files changed, 13 insertions, 6 deletions
diff --git a/include/git2/pkt.h b/include/git2/pkt.h index 7d61d4d38..d0ffa5569 100644 --- a/include/git2/pkt.h +++ b/include/git2/pkt.h @@ -56,3 +56,4 @@ struct git_pkt_ref { */ int git_pkt_gen_proto(char **out, int *outlen, const char *url); int git_pkt_parse_line(git_pkt **head, const char *line, const char **out); +void git_pkt_free(git_pkt *pkt); @@ -173,6 +173,17 @@ int git_pkt_parse_line(git_pkt **head, const char *line, const char **out) return error; } +void git_pkt_free(git_pkt *pkt) +{ + if(pkt->type == GIT_PKT_REF) { + git_pkt_ref *p = (git_pkt_ref *) pkt; + free(p->capabilities); + free(p->head.name); + } + + free(pkt); +} + /* * Create a git procol request. * diff --git a/src/transport_git.c b/src/transport_git.c index 526292c53..ed7203137 100644 --- a/src/transport_git.c +++ b/src/transport_git.c @@ -286,12 +286,7 @@ static void git_free(git_transport *transport) for (i = 0; i < refs->length; ++i) { git_pkt *p = git_vector_get(refs, i); - if (p->type == GIT_PKT_REF) { - free(((git_pkt_ref *)p)->head.name); - free(((git_pkt_ref *)p)->capabilities); - } - - free(p); + git_pkt_free(p); } git_vector_free(refs); |
