struct ref_update: add a type field
[gitweb.git] / refs.c
diff --git a/refs.c b/refs.c
index 6fe4bfe8d90c2d260a852172448303432885e764..c058f304deaa4617dd1dfa81e5ce67ef42b46bf6 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -3279,6 +3279,7 @@ struct ref_update {
        int flags; /* REF_NODEREF? */
        int have_old; /* 1 if old_sha1 is valid, 0 otherwise */
        struct ref_lock *lock;
+       int type;
        const char refname[FLEX_ARRAY];
 };
 
@@ -3413,7 +3414,6 @@ int ref_transaction_commit(struct ref_transaction *transaction,
 {
        int ret = 0, delnum = 0, i;
        struct ref_update **updates;
-       int *types;
        const char **delnames;
        int n = transaction->nr;
 
@@ -3422,7 +3422,6 @@ int ref_transaction_commit(struct ref_transaction *transaction,
 
        /* Allocate work space */
        updates = xmalloc(sizeof(*updates) * n);
-       types = xmalloc(sizeof(*types) * n);
        delnames = xmalloc(sizeof(*delnames) * n);
 
        /* Copy, sort, and reject duplicate refs */
@@ -3440,7 +3439,7 @@ int ref_transaction_commit(struct ref_transaction *transaction,
                                               (update->have_old ?
                                                update->old_sha1 : NULL),
                                               update->flags,
-                                              &types[i], onerr);
+                                              &update->type, onerr);
                if (!update->lock) {
                        ret = 1;
                        goto cleanup;
@@ -3468,7 +3467,7 @@ int ref_transaction_commit(struct ref_transaction *transaction,
 
                if (update->lock) {
                        delnames[delnum++] = update->lock->ref_name;
-                       ret |= delete_ref_loose(update->lock, types[i]);
+                       ret |= delete_ref_loose(update->lock, update->type);
                }
        }
 
@@ -3482,7 +3481,6 @@ int ref_transaction_commit(struct ref_transaction *transaction,
                if (updates[i]->lock)
                        unlock_ref(updates[i]->lock);
        free(updates);
-       free(types);
        free(delnames);
        ref_transaction_free(transaction);
        return ret;