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