Re: [PATCH] http-push: fix webdav lock leak.
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jan 19, 2008, 23:08 UTC
- Message-ID
- <alpine.LSU.1.00.0801192302340.5731@racer.site>
- In-Reply-To
- <1200756171-11696-1-git-send-email-gb@gbarbier.org>
Hi,
On Sat, 19 Jan 2008, Grégoire Barbier wrote:
Show 33 quoted lines
> diff --git a/http-push.c b/http-push.c
> index eef7674..2c4e91d 100644
> --- a/http-push.c
> +++ b/http-push.c
> @@ -2264,11 +2264,14 @@ int main(int argc, char **argv)
> if (!remote_tail)
> remote_tail = &remote_refs;
> if (match_refs(local_refs, remote_refs, &remote_tail,
> - nr_refspec, (const char **) refspec, push_all))
> - return -1;
> + nr_refspec, (const char **) refspec, push_all)) {
> + rc = -1;
> + goto cleanup;
> + }
> if (!remote_refs) {
> fprintf(stderr, "No refs in common and none specified; doing nothing.\n");
> - return 0;
> + rc = 0;
> + goto cleanup;
> }
>
> new_refs = 0;
> @@ -2399,10 +2402,10 @@ int main(int argc, char **argv)
> fprintf(stderr, "Unable to update server info\n");
> }
> }
> - if (info_ref_lock)
> - unlock_remote(info_ref_lock);
>
> cleanup:
> + if (info_ref_lock)
> + unlock_remote(info_ref_lock);
> free(remote);This late in the rc cycle, together with my unfamiliarity of the code and the code paths in http.c and http-push.c would make me feel _much_ better if you could insert the "if (info_ref_lock)" before the returns, instead of replacing the returns with "goto cleanup"s...
Thanks, Dscho