On 08/10/2018 19:31, Markus Armbruster wrote: > Calling error_report() in a function that takes an Error ** argument > is suspicious. mon_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. > > Signed-off-by: Markus Armbruster <arm...@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > vl.c | 14 ++++++-------- > 1 file changed, 6 insertions(+), 8 deletions(-) > > diff --git a/vl.c b/vl.c > index 3adc9dbe4f..1009d708a0 100644 > --- a/vl.c > +++ b/vl.c > @@ -2270,8 +2270,8 @@ static int mon_init_func(void *opaque, QemuOpts *opts, > Error **errp) > } else if (strcmp(mode, "control") == 0) { > flags = MONITOR_USE_CONTROL; > } else { > - error_report("unknown monitor mode \"%s\"", mode); > - exit(1); > + error_setg(errp, "unknown monitor mode \"%s\"", mode); > + return -1; > } > > if (qemu_opt_get_bool(opts, "pretty", 0)) > @@ -2285,8 +2285,8 @@ static int mon_init_func(void *opaque, QemuOpts *opts, > Error **errp) > chardev = qemu_opt_get(opts, "chardev"); > chr = qemu_chr_find(chardev); > if (chr == NULL) { > - error_report("chardev \"%s\" not found", chardev); > - exit(1); > + error_setg(errp, "chardev \"%s\" not found", chardev); > + return -1; > } > > monitor_init(chr, flags); > @@ -4365,10 +4365,8 @@ int main(int argc, char **argv, char **envp) > default_drive(default_floppy, snapshot, IF_FLOPPY, 0, FD_OPTS); > default_drive(default_sdcard, snapshot, IF_SD, 0, SD_OPTS); > > - if (qemu_opts_foreach(qemu_find_opts("mon"), > - mon_init_func, NULL, NULL)) { > - exit(1); > - } > + qemu_opts_foreach(qemu_find_opts("mon"), > + mon_init_func, NULL, &error_fatal); > > if (foreach_device_config(DEV_SERIAL, serial_parse) < 0) > exit(1); >