Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/refs.c
diff options
context:
space:
mode:
authorMichael Haggerty <mhagger@alum.mit.edu>2014-04-07 17:48:17 +0400
committerJunio C Hamano <gitster@pobox.com>2014-04-07 23:09:15 +0400
commit84178db76f34d0b8d363545f6e18c99f6e37df4e (patch)
treeb2f53dd492d88c766790f5de5b2c58bfd40d209b /refs.c
parent81c960e4dcbd69e28b031cbe370100cb28acb911 (diff)
struct ref_update: add a type field
It used to be that ref_transaction_commit() allocated a temporary array to hold the types of references while it is working. Instead, add a type field to ref_update that ref_transaction_commit() can use as its scratch space. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
-rw-r--r--refs.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/refs.c b/refs.c
index 6fe4bfe8d9..c058f304de 100644
--- 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 @@ cleanup:
if (updates[i]->lock)
unlock_ref(updates[i]->lock);
free(updates);
- free(types);
free(delnames);
ref_transaction_free(transaction);
return ret;