29.04.2014 02:46, Hani Benhabiles wrote: > Signed-off-by: Hani Benhabiles <h...@linux.com> > Suggested-by: Andreas Färber <afaer...@suse.de> > --- > qmp.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/qmp.c b/qmp.c > index 74107be..0d49abf 100644 > --- a/qmp.c > +++ b/qmp.c > @@ -199,7 +199,10 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path, > Error **errp) > ObjectProperty *prop; > > obj = object_resolve_path(path, &ambiguous); > - if (obj == NULL) { > + if (ambiguous) { > + error_setg(errp, "Path '%s' is ambiguous", path); > + return NULL; > + } else if (obj == NULL) { > error_set(errp, QERR_DEVICE_NOT_FOUND, path); > return NULL; > }
How about this: --- a/qmp.c +++ b/qmp.c @@ -200,7 +200,9 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path, Error **errp) obj = object_resolve_path(path, &ambiguous); if (obj == NULL) { - error_set(errp, QERR_DEVICE_NOT_FOUND, path); + error_set(errp, + ambiguous ? "Path '%s' is ambiguous" : QERR_DEVICE_NOT_FOUND, + path); return NULL; } The difference here is that we test "ambiguous" variable only if obj is NULL, ie, only on error path. Please note that object_resolve_path() does not initialize *ambiguous in all code paths. Thanks, /mjt