system/vl.c: Print machine name, not "(null)", for unknown machine types

In commit 412d294ffd we tried to improve the error message printed when
the machine type is unknown, but we used the wrong variable, resulting in:

$ ./build/x86/qemu-system-aarch64 -M bang
qemu-system-aarch64: unsupported machine type: "(null)"
Use -machine help to list supported machines

Use the right variable, so we produce more helpful output:

$ ./build/x86/qemu-system-aarch64 -M bang
qemu-system-aarch64: unsupported machine type: "bang"
Use -machine help to list supported machines

Note that we must move the qdict_del() to below the error_setg(),
because machine_type points into the value of that qdict entry,
and deleting it will make the pointer invalid.

Cc: qemu-stable@nongnu.org
Fixes: 412d294ffd ("vl.c: select_machine(): add selected machine type to error message")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
Peter Maydell 2024-08-22 13:23:10 +01:00 committed by Michael Tokarev
parent 80e3541282
commit d53bb908b5

View File

@ -1679,10 +1679,10 @@ static MachineClass *select_machine(QDict *qdict, Error **errp)
if (machine_type) { if (machine_type) {
machine_class = find_machine(machine_type, machines); machine_class = find_machine(machine_type, machines);
qdict_del(qdict, "type");
if (!machine_class) { if (!machine_class) {
error_setg(errp, "unsupported machine type: \"%s\"", optarg); error_setg(errp, "unsupported machine type: \"%s\"", machine_type);
} }
qdict_del(qdict, "type");
} else { } else {
machine_class = find_default_machine(machines); machine_class = find_default_machine(machines);
if (!machine_class) { if (!machine_class) {