Calling error_report() in a function that takes an Error ** argument is suspicious. vnc_init_func() does that, and then fails without setting an error. Its caller main(), via qemu_opts_foreach(), is fine with it, but clean it up anyway.
While there, drop a "Failed to start VNC server: " error message prefix that doesn't really add value. Cc: Gerd Hoffmann <kra...@redhat.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> Message-Id: <20181017082702.5581-28-arm...@redhat.com> Reviewed-by: Gerd Hoffmann <kra...@redhat.com> --- ui/vnc.c | 8 ++++---- vl.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ui/vnc.c b/ui/vnc.c index 98e3d3b1d8..0c1b477425 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -4082,13 +4082,13 @@ int vnc_init_func(void *opaque, QemuOpts *opts, Error **errp) assert(id); vnc_display_init(id, &local_err); if (local_err) { - error_report_err(local_err); - exit(1); + error_propagate(errp, local_err); + return -1; } vnc_display_open(id, &local_err); if (local_err != NULL) { - error_reportf_err(local_err, "Failed to start VNC server: "); - exit(1); + error_propagate(errp, local_err); + return -1; } return 0; } diff --git a/vl.c b/vl.c index 1fa1e14853..2ff0c5f32d 100644 --- a/vl.c +++ b/vl.c @@ -4527,7 +4527,7 @@ int main(int argc, char **argv, char **envp) /* init remote displays */ #ifdef CONFIG_VNC qemu_opts_foreach(qemu_find_opts("vnc"), - vnc_init_func, NULL, NULL); + vnc_init_func, NULL, &error_fatal); #endif if (using_spice) { -- 2.17.2