]> git.draconx.ca Git - upkg.git/commitdiff
uobject: Add support for decoding boolean properties.
authorNick Bowler <nbowler@draconx.ca>
Tue, 15 May 2012 01:02:51 +0000 (21:02 -0400)
committerNick Bowler <nbowler@draconx.ca>
Tue, 15 May 2012 01:09:00 +0000 (21:09 -0400)
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.

src/uobject/uobject.c

index 1a3d740f9e4ab7a786e049bd0111d1978d4e1c0f..fa93ec0f420bb6af18b9845dcd83ae811a21ec2c 100644 (file)
@@ -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)