Fei Li <fli@suse.com> writes:
> On 10/15/2018 07:53 PM, Markus Armbruster wrote:
>> 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.
>>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>> ui/vnc.c | 9 +++++----
>> vl.c | 2 +-
>> 2 files changed, 6 insertions(+), 5 deletions(-)
>>
>> diff --git a/ui/vnc.c b/ui/vnc.c
>> index 98e3d3b1d8..fcd2744d52 100644
>> --- a/ui/vnc.c
>> +++ b/ui/vnc.c
>> @@ -4082,13 +4082,14 @@ 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);
> Shall we use error_propagate(errp, local_err, ("Failed to init VNC
> server: ");
> like vnc_display_open does?
I don't know.
The error reporting is somewhat poor around here. Consider:
$ qemu-system-x86_64 -display vnc=:0,share=nope
qemu-system-x86_64: -display vnc=:0,share=nope: Failed to start VNC server: unknown vnc share= option
The "Failed to start VNC server: " prefix doesn't really add value.
$ qemu-system-x86_64 -display vnc=:0 -k bad
qemu-system-x86_64: -display vnc=:0: could not read keymap file: 'bad'
The error message refers to -display instead of -k. I doubt adding the
prefix would improve it.
Gerd, what do you think?
> If yes, I guess this error message should be added from last patch [26/35].
Yes.
> If not, please omit. :)
>
> Have a nice day
> Fei
>> + 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_prepend(errp, local_err,
>> + "Failed to start VNC server: ");
>> + return -1;
>> }
>> return 0;
>> }
>> diff --git a/vl.c b/vl.c
>> index c053117028..8e0006d49c 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -4526,7 +4526,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) {