[RFC PATCH 02/41] util: error: Introduce VIR_ERROR_AUTOPRESERVE_LAST macro

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The macro is used to automatically preserve the last error object on
cleanup paths which might override. Note that the 'ignore_value' is
required to silence clang's unused variable checker.

Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
---
 src/util/virerror.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/util/virerror.h b/src/util/virerror.h
index 42f2835a85..ce0b48b3ad 100644
--- a/src/util/virerror.h
+++ b/src/util/virerror.h
@@ -207,3 +207,13 @@ void virLastErrorPrefixMessage(const char *fmt, ...)
     G_GNUC_PRINTF(1, 2);

 G_DEFINE_AUTOPTR_CLEANUP_FUNC(virError, virFreeError);
+
+/**
+ * VIR_ERROR_AUTO_PRESERVE_LAST:
+ *
+ * This macro ensures that the last error object is restored to the state it was
+ * at the point where the macro was expanded when the scope ends.
+ */
+#define VIR_ERROR_AUTOPRESERVE_LAST \
+    __attribute__((cleanup(virErrorRestore))) virErrorPtr orig_err_preserve = virErrorPreserveLast(NULL); \
+    ignore_value(&orig_err_preserve)
-- 
2.26.2




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux