mirror of
https://github.com/ostreedev/ostree.git
synced 2025-01-12 13:18:27 +03:00
lib: improve transactions auto-cleanup logic
This fixes some aspects of OstreeRepoAutoTransaction and re-aligns it with the logic in flatpak. Specifically: * link to the underlying repo through refcounting * bridge internal errors to warning messages * verify the input pointer type This is a preparation step before exposing this logic as a public API.
This commit is contained in:
parent
30909a28f2
commit
c64b4bceba
@ -234,9 +234,17 @@ typedef OstreeRepo _OstreeRepoAutoTransaction;
|
||||
static inline void
|
||||
_ostree_repo_auto_transaction_cleanup (void *p)
|
||||
{
|
||||
if (p == NULL)
|
||||
return;
|
||||
g_return_if_fail (OSTREE_IS_REPO (p));
|
||||
|
||||
OstreeRepo *repo = p;
|
||||
if (repo)
|
||||
(void) ostree_repo_abort_transaction (repo, NULL, NULL);
|
||||
g_autoptr(GError) error = NULL;
|
||||
|
||||
if (!ostree_repo_abort_transaction (repo, NULL, &error))
|
||||
g_warning("Failed to auto-cleanup OSTree transaction: %s", error->message);
|
||||
|
||||
g_object_unref (repo);
|
||||
}
|
||||
|
||||
static inline _OstreeRepoAutoTransaction *
|
||||
@ -246,7 +254,8 @@ _ostree_repo_auto_transaction_start (OstreeRepo *repo,
|
||||
{
|
||||
if (!ostree_repo_prepare_transaction (repo, NULL, cancellable, error))
|
||||
return NULL;
|
||||
return (_OstreeRepoAutoTransaction *)repo;
|
||||
|
||||
return (_OstreeRepoAutoTransaction *) g_object_ref (repo);
|
||||
}
|
||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (_OstreeRepoAutoTransaction, _ostree_repo_auto_transaction_cleanup)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user