diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index dd225e63..d464cd0a 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -2195,19 +2195,21 @@ ostree_repo_commit_transaction (OstreeRepo *self, if (self->txn.refs) if (!_ostree_repo_update_refs (self, self->txn.refs, cancellable, error)) return FALSE; - g_clear_pointer (&self->txn.refs, g_hash_table_destroy); if (self->txn.collection_refs) if (!_ostree_repo_update_collection_refs (self, self->txn.collection_refs, cancellable, error)) return FALSE; - g_clear_pointer (&self->txn.collection_refs, g_hash_table_destroy); /* Update the summary if auto-update-summary is set, because doing so was * delayed for each ref change during the transaction. */ - if (!_ostree_repo_maybe_regenerate_summary (self, cancellable, error)) + if ((self->txn.refs || self->txn.collection_refs) && + !_ostree_repo_maybe_regenerate_summary (self, cancellable, error)) return FALSE; + g_clear_pointer (&self->txn.refs, g_hash_table_destroy); + g_clear_pointer (&self->txn.collection_refs, g_hash_table_destroy); + self->in_transaction = FALSE; if (!ot_ensure_unlinked_at (self->repo_dir_fd, "transaction", 0))