|
@@ -542,15 +542,12 @@ void qdev_connect_gpio_out_named(DeviceState *dev, const char *name, int n,
|
|
|
{
|
|
|
char *propname = g_strdup_printf("%s[%d]",
|
|
|
name ? name : "unnamed-gpio-out", n);
|
|
|
- if (pin) {
|
|
|
- /* We need a name for object_property_set_link to work. If the
|
|
|
- * object has a parent, object_property_add_child will come back
|
|
|
- * with an error without doing anything. If it has none, it will
|
|
|
- * never fail. So we can just call it with a NULL Error pointer.
|
|
|
- */
|
|
|
+ if (pin && !OBJECT(pin)->parent) {
|
|
|
+ /* We need a name for object_property_set_link to work */
|
|
|
object_property_add_child(container_get(qdev_get_machine(),
|
|
|
"/unattached"),
|
|
|
- "non-qdev-gpio[*]", OBJECT(pin), NULL);
|
|
|
+ "non-qdev-gpio[*]", OBJECT(pin),
|
|
|
+ &error_abort);
|
|
|
}
|
|
|
object_property_set_link(OBJECT(dev), OBJECT(pin), propname, &error_abort);
|
|
|
g_free(propname);
|