qemu/include
Markus Armbruster 51b9b478cc qom: -object error messages lost location, restore it
qemu_opts_foreach() runs its callback with the error location set to
the option's location.  Any errors the callback reports use the
option's location automatically.

Commit 90998d5 moved the actual error reporting from "inside"
qemu_opts_foreach() to after it.  Here's a typical hunk:

	 if (qemu_opts_foreach(qemu_find_opts("object"),
    -                          object_create,
    -                          object_create_initial, NULL)) {
    +                          user_creatable_add_opts_foreach,
    +                          object_create_initial, &err)) {
    +        error_report_err(err);
	     exit(1);
	 }

Before, object_create() reports from within qemu_opts_foreach(), using
the option's location.  Afterwards, we do it after
qemu_opts_foreach(), using whatever location happens to be current
there.  Commonly a "none" location.

This is because Error objects don't have location information.
Problematic.

Reproducer:

    $ qemu-system-x86_64 -nodefaults -display none -object secret,id=foo,foo=bar
    qemu-system-x86_64: Property '.foo' not found

Note no location.  This commit restores it:

    qemu-system-x86_64: -object secret,id=foo,foo=bar: Property '.foo' not found

Note that the qemu_opts_foreach() bug just fixed could mask the bug
here: if the location it leaves dangling hasn't been clobbered, yet,
it's the correct one.

Reported-by: Eric Blake <eblake@redhat.com>
Cc: Daniel P. Berrange <berrange@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1461767349-15329-4-git-send-email-armbru@redhat.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
[Paragraph on Error added to commit message]
2016-04-28 08:19:36 +02:00
..
block block: Fix bdrv_drain in coroutine 2016-04-11 16:59:09 +01:00
crypto include/crypto: Include qapi-types.h or qemu/bswap.h instead of qemu-common.h 2016-03-22 22:20:16 +01:00
disas disas: Add print_insn to disassemble info 2015-07-09 15:20:40 +02:00
exec qemu-log: dfilter-ise exec, out_asm, op and opt_op 2016-03-22 22:20:18 +01:00
fpu include: Clean up includes 2016-02-23 12:43:05 +00:00
hw virtio-input: support absolute axis config in pass-through 2016-04-13 17:26:12 +02:00
io io: implement socket watch for win32 using WSAEventSelect+select 2016-03-10 17:19:07 +00:00
libdecnumber include: Clean up includes 2016-02-23 12:43:05 +00:00
migration migration (ordinary): move bdrv_invalidate_cache_all of of coroutine context 2016-02-26 20:39:50 +05:30
monitor Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
net Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
qapi Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
qemu event-notifier: Add "is_external" parameter 2016-04-22 16:43:56 +02:00
qom qom: -object error messages lost location, restore it 2016-04-28 08:19:36 +02:00
standard-headers update Linux headers to 4.6 2016-04-05 11:46:52 +02:00
sysemu kvm: add kvm_device_supported() helper function 2016-03-30 17:27:24 +01:00
ui ui/virtio-gpu: add and use qemu_create_displaysurface_pixman 2016-04-11 12:32:01 +02:00
elf.h include: Clean up includes 2016-02-23 12:43:05 +00:00
glib-compat.h glib: add compatibility interface for g_hash_table_add() 2015-10-30 09:01:03 +01:00
qemu-common.h util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
qemu-io.h qemu-io: Use BlockBackend 2015-02-16 15:07:19 +00:00
qjson.h QJSON: Add JSON writer 2015-02-05 17:16:14 +01:00
trace-tcg.h trace: [tcg] Generate TCG tracing routines 2014-08-12 14:26:12 +01:00
trace.h trace: [tcg] Include event definitions in "trace.h" 2014-08-12 14:26:12 +01:00