-#define CHECK_ERROR(cond, conn, fn) \
- do { if (cond) _raise_virterror (conn, fn); } while (0)
+#define CHECK_ERROR_CLEANUP(cond, cleanup, fn) \
+ do { if (cond) { cleanup; _raise_virterror (fn); } } while (0)
+#define CHECK_ERROR(cond, fn) \
+ CHECK_ERROR_CLEANUP(cond, EMPTY, fn)