summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2011-06-08 23:38:22 +0200
committerCarlos Martín Nieto <carlos@cmartin.tk>2011-06-26 18:18:13 +0200
commitbe9fe679fc86a8f233b0a6fc6078894edcb8661e (patch)
tree4eb63e0fffb66400830b050cb5c50fd3139b8a69 /src
parentecb6ca0e1f908c1480a602e8cca16bd8916b8a99 (diff)
downloadlibgit2-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>
Diffstat (limited to 'src')
-rw-r--r--src/pkt.c11
-rw-r--r--src/transport_git.c7
2 files changed, 12 insertions, 6 deletions
diff --git a/src/pkt.c b/src/pkt.c
index 023196a7e..f77bc3046 100644
--- a/src/pkt.c
+++ b/src/pkt.c
@@ -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);