From 43fa1e0bd98887fb5ead745de13dc9961799e97e Mon Sep 17 00:00:00 2001 From: Eduardo Habkost Date: Fri, 12 Feb 2016 17:02:25 -0200 Subject: [PATCH] vl: Reset location after handling command-line arguments After looping through all command-line arguments, error location info becomes obsolete, and any function calling error_report() will print misleading information. This breaks error reporting for some option handling, like: $ qemu-system-x86_64 -icount rr=x -vnc :0 qemu-system-x86_64: -vnc :0: Invalid icount rr option: x $ qemu-system-x86_64 -m size= -vnc :0 qemu-system-x86_64: -vnc :0: missing 'size' option value Fix this by resetting location info as soon as we exit the command-line handling loop. With this, replay_configure() and set_memory_options() won't print any location info yet, but at least they won't print incorrect information. Signed-off-by: Eduardo Habkost Message-Id: <1455303747-19776-3-git-send-email-ehabkost@redhat.com> Reviewed-by: Laszlo Ersek ["Do not insert code here" comment added to prevent regressions] Signed-off-by: Markus Armbruster --- vl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/vl.c b/vl.c index 226bdeb9af..bf0ef90cf9 100644 --- a/vl.c +++ b/vl.c @@ -4008,6 +4008,11 @@ int main(int argc, char **argv, char **envp) } } } + /* + * Clear error location left behind by the loop. + * Best done right after the loop. Do not insert code here! + */ + loc_set_none(); replay_configure(icount_opts); @@ -4015,8 +4020,6 @@ int main(int argc, char **argv, char **envp) set_memory_options(&ram_slots, &maxram_size, machine_class); - loc_set_none(); - os_daemonize(); if (qemu_init_main_loop(&main_loop_err)) {