On 30.09.24 11:14, marcandre.lur...@redhat.com wrote:
From: Marc-André Lureau <marcandre.lur...@redhat.com>
object_resolve_path_type() didn't always set *ambiguousp.
Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
---
qom/object.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/qom/object.c b/qom/object.c
index 28c5b66eab..bdc8a2c666 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -2201,6 +2201,9 @@ Object *object_resolve_path_type(const char *path, const
char *typename,
}
} else {
obj = object_resolve_abs_path(object_get_root(), parts + 1, typename);
+ if (ambiguousp) {
+ *ambiguousp = false;
+ }
Doesn't this hunk in isolation fix the issue? With this
object_resolve_path_type() should set the pointer on all paths if it is
non-null..
Hmm, called object_resolve_partial_path() also doesn't set ambiguous on every
path, so this hunk is at lease incomplete.
I'm unsure about what semantics expected around ambigous pointers, but it seems to me
that it is set only on failure paths, as a reason, why we failed. If this is true, I
think, we need only the second hunk, which initializes local "ambig".
}
g_strfreev(parts);
@@ -2226,7 +2229,7 @@ Object *object_resolve_path_at(Object *parent, const char
*path)
Object *object_resolve_type_unambiguous(const char *typename, Error **errp)
{
- bool ambig;
+ bool ambig = false;
Object *o = object_resolve_path_type("", typename, &ambig);
if (ambig) {
--
Best regards,
Vladimir