diff --git a/src/storage/storage_backend_disk.c b/src/storage/storage_backend_disk.c index 1228da1f47..49590019c5 100644 --- a/src/storage/storage_backend_disk.c +++ b/src/storage/storage_backend_disk.c @@ -918,10 +918,9 @@ virStorageBackendDiskCreateVol(virStoragePoolObjPtr pool, /* Best effort to remove the partition. Ignore any errors * since we could be calling this with vol->target.path == NULL */ - save_err = virSaveLastError(); + virErrorPreserveLast(&save_err); ignore_value(virStorageBackendDiskDeleteVol(pool, vol, 0)); - virSetError(save_err); - virFreeError(save_err); + virErrorRestore(&save_err); return -1; } diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_backend_logical.c index 9be6d61a12..5de21103f5 100644 --- a/src/storage/storage_backend_logical.c +++ b/src/storage/storage_backend_logical.c @@ -969,10 +969,9 @@ virStorageBackendLogicalCreateVol(virStoragePoolObjPtr pool, return 0; error: - err = virSaveLastError(); + virErrorPreserveLast(&err); virStorageBackendLogicalDeleteVol(pool, vol, 0); - virSetError(err); - virFreeError(err); + virErrorRestore(&err); return -1; } diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 981f2a4301..da09d7de13 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -81,18 +81,16 @@ storagePoolRefreshFailCleanup(virStorageBackendPtr backend, virStoragePoolObjPtr obj, const char *stateFile) { - virErrorPtr orig_err = virSaveLastError(); + virErrorPtr orig_err; + virErrorPreserveLast(&orig_err); virStoragePoolObjClearVols(obj); if (stateFile) unlink(stateFile); if (backend->stopPool) backend->stopPool(obj); - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); }