aboutsummaryrefslogtreecommitdiff
path: root/qom/object.c
diff options
context:
space:
mode:
Diffstat (limited to 'qom/object.c')
-rw-r--r--qom/object.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/qom/object.c b/qom/object.c
index 6a01d56..e86cb05 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -20,6 +20,7 @@
#include "qapi/string-input-visitor.h"
#include "qapi/string-output-visitor.h"
#include "qapi/qobject-input-visitor.h"
+#include "qapi/forward-visitor.h"
#include "qapi/qapi-builtin-visit.h"
#include "qapi/qmp/qerror.h"
#include "qapi/qmp/qjson.h"
@@ -2683,16 +2684,20 @@ static void property_get_alias(Object *obj, Visitor *v, const char *name,
void *opaque, Error **errp)
{
AliasProperty *prop = opaque;
+ Visitor *alias_v = visitor_forward_field(v, prop->target_name, name);
- object_property_get(prop->target_obj, prop->target_name, v, errp);
+ object_property_get(prop->target_obj, prop->target_name, alias_v, errp);
+ visit_free(alias_v);
}
static void property_set_alias(Object *obj, Visitor *v, const char *name,
void *opaque, Error **errp)
{
AliasProperty *prop = opaque;
+ Visitor *alias_v = visitor_forward_field(v, prop->target_name, name);
- object_property_set(prop->target_obj, prop->target_name, v, errp);
+ object_property_set(prop->target_obj, prop->target_name, alias_v, errp);
+ visit_free(alias_v);
}
static Object *property_resolve_alias(Object *obj, void *opaque,