void qmp_object_add(const char *type, const char *id,
bool has_props, QObject *props, Error **errp)
{
- const QDict *pdict = NULL;
- QmpInputVisitor *qiv;
+ QDict *pdict;
+ Visitor *v;
Object *obj;
if (props) {
error_setg(errp, QERR_INVALID_PARAMETER_TYPE, "props", "dict");
return;
}
+ QINCREF(pdict);
+ } else {
+ pdict = qdict_new();
}
- qiv = qmp_input_visitor_new(props, true);
- obj = user_creatable_add_type(type, id, pdict,
- qmp_input_get_visitor(qiv), errp);
- qmp_input_visitor_cleanup(qiv);
+ v = qmp_input_visitor_new(QOBJECT(pdict), true);
+ obj = user_creatable_add_type(type, id, pdict, v, errp);
+ visit_free(v);
if (obj) {
object_unref(obj);
}
+ QDECREF(pdict);
}
void qmp_object_del(const char *id, Error **errp)