From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:41269) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RxEYf-0005Yd-1I for qemu-devel@nongnu.org; Tue, 14 Feb 2012 04:20:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RxEYY-000294-03 for qemu-devel@nongnu.org; Tue, 14 Feb 2012 04:20:20 -0500 Received: from mail-pw0-f45.google.com ([209.85.160.45]:42912) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RxEYX-00028b-Q3 for qemu-devel@nongnu.org; Tue, 14 Feb 2012 04:20:13 -0500 Received: by mail-pw0-f45.google.com with SMTP id ro12so319576pbb.4 for ; Tue, 14 Feb 2012 01:20:13 -0800 (PST) Sender: Paolo Bonzini From: Paolo Bonzini Date: Tue, 14 Feb 2012 10:19:52 +0100 Message-Id: <1329211193-393-2-git-send-email-pbonzini@redhat.com> In-Reply-To: <1329211193-393-1-git-send-email-pbonzini@redhat.com> References: <1329211193-393-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PATCH 1/2] qdev: allow setting properties to NULL List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org SPARC and PPC set properties to NULL. This can be done with an empty string value. Signed-off-by: Paolo Bonzini --- hw/qdev-properties.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-) diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c index b6d6fcf..6f09a35 100644 --- a/hw/qdev-properties.c +++ b/hw/qdev-properties.c @@ -613,7 +613,7 @@ static void set_pointer(Object *obj, Visitor *v, Property *prop, } if (!*str) { g_free(str); - error_set_from_qdev_prop_error(errp, EINVAL, dev, prop, str); + *ptr = NULL; return; } ret = parse(dev, str, ptr); @@ -1120,7 +1120,8 @@ void qdev_prop_set_string(DeviceState *dev, const char *name, char *value) int qdev_prop_set_drive(DeviceState *dev, const char *name, BlockDriverState *value) { Error *errp = NULL; - object_property_set_str(OBJECT(dev), bdrv_get_device_name(value), + const char *bdrv_name = value ? bdrv_get_device_name(value) : ""; + object_property_set_str(OBJECT(dev), bdrv_name, name, &errp); if (errp) { qerror_report_err(errp); @@ -1139,16 +1140,18 @@ void qdev_prop_set_drive_nofail(DeviceState *dev, const char *name, BlockDriverS void qdev_prop_set_chr(DeviceState *dev, const char *name, CharDriverState *value) { Error *errp = NULL; - assert(value->label); - object_property_set_str(OBJECT(dev), value->label, name, &errp); + assert(!value || value->label); + object_property_set_str(OBJECT(dev), + value ? value->label : "", name, &errp); assert(!errp); } void qdev_prop_set_netdev(DeviceState *dev, const char *name, VLANClientState *value) { Error *errp = NULL; - assert(value->name); - object_property_set_str(OBJECT(dev), value->name, name, &errp); + assert(!value || value->name); + object_property_set_str(OBJECT(dev), + value ? value->name : "", name, &errp); assert(!errp); } -- 1.7.7.6