From 19c345f2fe2a8a3659cbc24d7cc40ec87332d2b1 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Wed, 24 Apr 2013 14:06:40 +0200 Subject: [PATCH] qemuBuildCommandLine: Don't overwrite errors with NWFilter's one Currently, if there has been an error in building command line process after virtual interfaces has been created, the flow jumps to 'error' label, where virDomainConfNWFilterTeardown() is called. This may report an error as well, but should not overwrite the original cause why we jumped to 'error' label. --- src/qemu/qemu_command.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 7245b27c18..235468e8fc 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5903,6 +5903,7 @@ qemuBuildCommandLine(virConnectPtr conn, virDomainSnapshotObjPtr snapshot, enum virNetDevVPortProfileOp vmop) { + virErrorPtr originalError = NULL; int i, j; const char *emulator; char uuid[VIR_UUID_STRING_BUFLEN]; @@ -7833,13 +7834,16 @@ qemuBuildCommandLine(virConnectPtr conn, virObjectUnref(cfg); return cmd; - no_memory: +no_memory: virReportOOMError(); - error: +error: virObjectUnref(cfg); - /* free up any resources in the network driver */ + /* free up any resources in the network driver + * but don't overwrite the original error */ + originalError = virSaveLastError(); for (i = 0; i <= last_good_net; i++) virDomainConfNWFilterTeardown(def->nets[i]); + virSetError(originalError); virCommandFree(cmd); return NULL; }