get_shallow_commits: Avoid memory leak if a commit has been reached already.
[gitweb.git] / upload-pack.c
index 7e3c437d8e1eaca61ccabb29f3097ba9c5c3732e..d4a7b625f47d4b92a85f9efc0686f5dc3910bb6d 100644 (file)
@@ -565,7 +565,7 @@ static void receive_needs(void)
                        SHALLOW, NOT_SHALLOW);
                while (result) {
                        struct object *object = &result->item->object;
-                       if (!(object->flags & CLIENT_SHALLOW)) {
+                       if (!(object->flags & (CLIENT_SHALLOW|NOT_SHALLOW))) {
                                packet_write(1, "shallow %s",
                                                sha1_to_hex(object->sha1));
                                register_shallow(object->sha1);
@@ -582,6 +582,7 @@ static void receive_needs(void)
                                object->flags &= ~CLIENT_SHALLOW;
                                /* make sure the real parents are parsed */
                                unregister_shallow(object->sha1);
+                               object->parsed = 0;
                                parse_commit((struct commit *)object);
                                parents = ((struct commit *)object)->parents;
                                while (parents) {