From: Nick Bowler Date: Tue, 15 May 2012 01:02:51 +0000 (-0400) Subject: uobject: Add support for decoding boolean properties. X-Git-Url: https://git.draconx.ca/gitweb/upkg.git/commitdiff_plain/c148dfd50aef1b3f8142238a0bf88f20e95700a9?hp=95f7a657a099c844a644b8736bd18e08afd50661 uobject: Add support for decoding boolean properties. Boolean properties have an encoded length of zero, but we were failing spuriously due to an excessively broad error check. Other than that, we have already done all the necessary decoding for boolean properties, so just wire up the appropriate GObject calls to make it happen. --- diff --git a/src/uobject/uobject.c b/src/uobject/uobject.c index 1a3d740..fa93ec0 100644 --- a/src/uobject/uobject.c +++ b/src/uobject/uobject.c @@ -174,7 +174,7 @@ decode_prop_header(struct upkg *upkg, struct prop_head *head, } rc = decode_tag_size(&head->size, tag_size, buf+len, n-len); - if (head->size == 0) + if (rc == 0 && head->size == 0) return 0; len += rc; @@ -239,6 +239,11 @@ static unsigned long deserialize_property(UObject *uo, struct prop_head *head) g_value_set_ulong(&val, unpack_32_le(priv->buf+len)); g_object_set_property(G_OBJECT(uo), head->prop_name, &val); break; + case PROPERTY_BOOLEAN: + g_value_init(&val, G_TYPE_BOOLEAN); + g_value_set_boolean(&val, head->tag_msb); + g_object_set_property(G_OBJECT(uo), head->prop_name, &val); + break; case PROPERTY_OBJECT: rc = decode_object_property(uo, &val, len); if (rc != 0)