When qemuMonitorCloseFileHandle is called in error path, we need to
preserve the original error since a possible further error when running
closefd monitor command is not very useful to users.
int qemuMonitorCloseFileHandle(qemuMonitorPtr mon,
const char *fdname)
{
- int ret;
+ int ret = -1;
+ virErrorPtr error;
+
VIR_DEBUG("mon=%p fdname=%s",
mon, fdname);
+ error = virSaveLastError();
+
if (!mon) {
qemuReportError(VIR_ERR_INVALID_ARG, "%s",
_("monitor must not be NULL"));
- return -1;
+ goto cleanup;
}
if (mon->json)
ret = qemuMonitorJSONCloseFileHandle(mon, fdname);
else
ret = qemuMonitorTextCloseFileHandle(mon, fdname);
+
+cleanup:
+ if (error) {
+ virSetError(error);
+ virFreeError(error);
+ }
return ret;
}
const char *fdname,
int fd);
+/* The function preserves previous error and only sets it's own error if no
+ * error was set before.
+ */
int qemuMonitorCloseFileHandle(qemuMonitorPtr mon,
const char *fdname);