Commit bf4c2c57 by Nelson Elhage

wait_while_ack: use git_pkt_free

git__free is insufficient if the packet is a git_pkt_ref or another
type that requires freeing referenced structures.
parent e212011b
......@@ -317,27 +317,34 @@ on_error:
static int wait_while_ack(gitno_buffer *buf)
{
int error;
git_pkt_ack *pkt = NULL;
git_pkt *pkt = NULL;
git_pkt_ack *ack = NULL;
while (1) {
git__free(pkt);
if (pkt) {
git_pkt_free(pkt);
}
if ((error = recv_pkt((git_pkt **)&pkt, NULL, buf)) < 0)
if ((error = recv_pkt(&pkt, NULL, buf)) < 0)
return error;
if (pkt->type == GIT_PKT_NAK)
break;
if (pkt->type != GIT_PKT_ACK)
continue;
if (pkt->type == GIT_PKT_ACK &&
(pkt->status != GIT_ACK_CONTINUE &&
pkt->status != GIT_ACK_COMMON &&
pkt->status != GIT_ACK_READY)) {
git__free(pkt);
return 0;
ack = (git_pkt_ack*)pkt;
if (ack->status != GIT_ACK_CONTINUE &&
ack->status != GIT_ACK_COMMON &&
ack->status != GIT_ACK_READY) {
break;
}
}
git__free(pkt);
if (pkt) {
git_pkt_free(pkt);
}
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment