Merge branch 'sp/reflog' into next
authorJunio C Hamano <junkio@cox.net>
Wed, 31 May 2006 22:23:54 +0000 (15:23 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 31 May 2006 22:23:54 +0000 (15:23 -0700)
* sp/reflog:
  fetch.c: do not pass uninitialized lock to unlock_ref().

1  2 
fetch.c

diff --combined fetch.c
+++ b/fetch.c
@@@ -3,7 -3,6 +3,7 @@@
  #include "cache.h"
  #include "commit.h"
  #include "tree.h"
 +#include "tree-walk.h"
  #include "tag.h"
  #include "blob.h"
  #include "refs.h"
@@@ -38,26 -37,21 +38,26 @@@ static int process(struct object *obj)
  
  static int process_tree(struct tree *tree)
  {
 -      struct tree_entry_list *entry;
 +      struct tree_desc desc;
 +      struct name_entry entry;
  
        if (parse_tree(tree))
                return -1;
  
 -      entry = tree->entries;
 -      tree->entries = NULL;
 -      while (entry) {
 -              struct tree_entry_list *next = entry->next;
 -              if (process(entry->item.any))
 -                      return -1;
 -              free(entry->name);
 -              free(entry);
 -              entry = next;
 +      desc.buf = tree->buffer;
 +      desc.size = tree->size;
 +      while (tree_entry(&desc, &entry)) {
 +              if (S_ISDIR(entry.mode)) {
 +                      struct tree *tree = lookup_tree(entry.sha1);
 +                      process_tree(tree);
 +              } else {
 +                      struct blob *blob = lookup_blob(entry.sha1);
 +                      process(&blob->object);
 +              }
        }
 +      free(tree->buffer);
 +      tree->buffer = NULL;
 +      tree->size = 0;
        return 0;
  }
  
@@@ -209,7 -203,7 +209,7 @@@ static int mark_complete(const char *pa
  
  int pull(char *target)
  {
-       struct ref_lock *lock;
+       struct ref_lock *lock = NULL;
        unsigned char sha1[20];
        char *msg;
        int ret;
  
        if (interpret_target(target, sha1)) {
                error("Could not interpret %s as something to pull", target);
-               unlock_ref(lock);
+               if (lock)
+                       unlock_ref(lock);
                return -1;
        }
        if (process(lookup_unknown_object(sha1))) {
-               unlock_ref(lock);
+               if (lock)
+                       unlock_ref(lock);
                return -1;
        }
        if (loop()) {
-               unlock_ref(lock);
+               if (lock)
+                       unlock_ref(lock);
                return -1;
        }