ref_transaction_commit(): check for valid `transaction->state`
Move the check that `transaction->state` is valid from `files_transaction_commit()` to `ref_transaction_commit()`, where other future reference backends can benefit from it as well. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael Haggerty committed
May 22, 2017 at 16:17 UTC
8d4240d3c8a2d31b7bedda8408c0b3c217c76998
2 files changed
+12
-3
refs.c
+12
@@ -1694,6 +1694,18 @@ int ref_transaction_commit(struct ref_transaction *transaction,
1694
{
1695
struct ref_store *refs = transaction->ref_store;
1696
1697
+ switch (transaction->state) {
1698
+ case REF_TRANSACTION_OPEN:
1699
+ /* Good. */
1700
+ break;
1701
+ case REF_TRANSACTION_CLOSED:
1702
+ die("BUG: prepare called on a closed reference transaction");
1703
+ break;
1704
+ default:
1705
+ die("BUG: unexpected reference transaction state");
1706
+ break;
1707
+ }
1708
+
1709
if (getenv(GIT_QUARANTINE_ENVIRONMENT)) {
1710
strbuf_addstr(err,
1711
_("ref updates forbidden inside quarantine environment"));
refs/files-backend.c
-3
@@ -2874,9 +2874,6 @@ static int files_transaction_commit(struct ref_store *ref_store,
2874
2875
assert(err);
2876
2877
- if (transaction->state != REF_TRANSACTION_OPEN)
2878
- die("BUG: commit called for transaction that is not open");
2879
-
2877
if (!transaction->nr)
2878
goto cleanup;
2879