From: Simon McVittie Date: Sat, 30 Apr 2022 11:53:42 +0000 (+0100) Subject: repo: Correctly initialize refcount of temporary transaction X-Git-Tag: archive/raspbian/2022.4-1+rpi1^2~9^2~1^2~1^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=71304e854c;p=ostree.git repo: Correctly initialize refcount of temporary transaction Previously, the reference count was left uninitialized as a result of bypassing the constructor, and the intended abort-on-error usually wouldn't have happened. Fixes: 8a9737a "repo/private: move OstreeRepoAutoTransaction to a boxed type" Resolves: https://github.com/ostreedev/ostree/issues/2592 Signed-off-by: Simon McVittie --- diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index d688e9b7..0af8fee3 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -1689,10 +1689,10 @@ ostree_repo_prepare_transaction (OstreeRepo *self, g_debug ("Preparing transaction in repository %p", self); /* Set up to abort the transaction if we return early from this function. - * This needs to be manually built here due to a circular dependency. */ - g_autoptr(OstreeRepoAutoTransaction) txn = g_malloc(sizeof(OstreeRepoAutoTransaction)); + * We can't call _ostree_repo_auto_transaction_start() here, because that + * would be a circular dependency; use the lower-level version instead. */ + g_autoptr(OstreeRepoAutoTransaction) txn = _ostree_repo_auto_transaction_new (self); g_assert (txn != NULL); - txn->repo = self; memset (&self->txn.stats, 0, sizeof (OstreeRepoTransactionStats));