Jeff King <p...@peff.net> writes:

> You didn't see my response to the other patch yet. :)
>
>> >    /* write pack */
>> >    if (write_pack_data(bundle_fd, &revs))
>> > -          return -1;
>> > +          goto err;
>
> This does still suffer from the double-close I mentioned earlier. I'm
> not sure if we want to address that or not.

Something like this on top?

 bundle.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/bundle.c b/bundle.c
index 08e32ca..bbf4efa 100644
--- a/bundle.c
+++ b/bundle.c
@@ -453,8 +453,10 @@ int create_bundle(struct bundle_header *header, const char 
*path,
                goto err;
 
        /* write pack */
-       if (write_pack_data(bundle_fd, &revs))
+       if (write_pack_data(bundle_fd, &revs)) {
+               bundle_fd = -1; /* already closed by the above call */
                goto err;
+       }
 
        if (!bundle_to_stdout) {
                if (commit_lock_file(&lock))
@@ -463,7 +465,8 @@ int create_bundle(struct bundle_header *header, const char 
*path,
        return 0;
 err:
        if (!bundle_to_stdout) {
-               close(bundle_fd);
+               if (0 <= bundle_fd)
+                       close(bundle_fd);
                rollback_lock_file(&lock);
        }
        return -1;
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to