From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50354) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adieb-0005n5-0x for qemu-devel@nongnu.org; Wed, 09 Mar 2016 13:16:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1adieV-0003B1-UA for qemu-devel@nongnu.org; Wed, 09 Mar 2016 13:16:12 -0500 Received: from mx1.redhat.com ([209.132.183.28]:37834) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adieV-0003Ar-Mr for qemu-devel@nongnu.org; Wed, 09 Mar 2016 13:16:07 -0500 References: <1457365409-2905-1-git-send-email-berrange@redhat.com> <1457365409-2905-2-git-send-email-berrange@redhat.com> <56DDB917.8040605@redhat.com> <20160309180713.GD9179@redhat.com> From: Max Reitz Message-ID: <56E06863.5060908@redhat.com> Date: Wed, 9 Mar 2016 19:16:03 +0100 MIME-Version: 1.0 In-Reply-To: <20160309180713.GD9179@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="eoCRQ30c29XCIi7WoXjD7O8gu4FHKqgWr" Subject: Re: [Qemu-devel] [PATCH v2 01/10] qdict: implement a qdict_crumple method for un-flattening a dict List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Daniel P. Berrange" Cc: Paolo Bonzini , qemu-devel@nongnu.org, =?UTF-8?Q?Andreas_F=c3=a4rber?= , Markus Armbruster This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --eoCRQ30c29XCIi7WoXjD7O8gu4FHKqgWr Content-Type: multipart/mixed; boundary="WQdwa7Awn2uo5LLUVaEXsOLItD7LJJckh" From: Max Reitz To: "Daniel P. Berrange" Cc: qemu-devel@nongnu.org, Markus Armbruster , =?UTF-8?Q?Andreas_F=c3=a4rber?= , Paolo Bonzini , Eric Blake Message-ID: <56E06863.5060908@redhat.com> Subject: Re: [PATCH v2 01/10] qdict: implement a qdict_crumple method for un-flattening a dict References: <1457365409-2905-1-git-send-email-berrange@redhat.com> <1457365409-2905-2-git-send-email-berrange@redhat.com> <56DDB917.8040605@redhat.com> <20160309180713.GD9179@redhat.com> In-Reply-To: <20160309180713.GD9179@redhat.com> --WQdwa7Awn2uo5LLUVaEXsOLItD7LJJckh Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 09.03.2016 19:07, Daniel P. Berrange wrote: > On Mon, Mar 07, 2016 at 06:23:35PM +0100, Max Reitz wrote: >> On 07.03.2016 16:43, Daniel P. Berrange wrote: [...] >>> +static void qdict_crumple_test_recursive(void) >>> +{ >>> + QDict *src, *dst, *rule; >>> + QObject *child; >>> + QList *rules; >>> + >>> + src =3D qdict_new(); >>> + qdict_put(src, "rule.0.match", qstring_from_str("fred")); >>> + qdict_put(src, "rule.0.policy", qstring_from_str("allow")); >>> + qdict_put(src, "rule.1.match", qstring_from_str("bob")); >>> + qdict_put(src, "rule.1.policy", qstring_from_str("deny")); >>> + >>> + dst =3D (QDict *)qdict_crumple(src, true, &error_abort); >>> + >>> + g_assert_cmpint(qdict_size(dst), =3D=3D, 1); >>> + >>> + child =3D qdict_get(dst, "rule"); >>> + g_assert_cmpint(qobject_type(child), =3D=3D, QTYPE_QLIST); >>> + >>> + rules =3D qdict_get_qlist(dst, "rule"); >>> + g_assert_cmpint(qlist_size(rules), =3D=3D, 2); >>> + >>> + rule =3D qobject_to_qdict(qlist_pop(rules)); >> >> g_assert_cmpint(qdict_size(rule), =3D=3D, 2); ? >> >>> + g_assert_cmpstr("fred", =3D=3D, qdict_get_str(rule, "match")); >>> + g_assert_cmpstr("allow", =3D=3D, qdict_get_str(rule, "policy"));= >>> + QDECREF(rule); >>> + >>> + rule =3D qobject_to_qdict(qlist_pop(rules)); >> >> >> g_assert_cmpint(qdict_size(rule), =3D=3D, 2); ? >> >>> + g_assert_cmpstr("bob", =3D=3D, qdict_get_str(rule, "match")); >>> + g_assert_cmpstr("deny", =3D=3D, qdict_get_str(rule, "policy")); >>> + QDECREF(rule); >>> + >>> + QDECREF(src); >>> + QDECREF(dst); >> >> QDECREF(rules); >=20 > rules is a borrowed reference, so we can't decrement it. Oops, right. :-) I suppose it looked so tempting to me because of the QDECREF(rule) for the pop'ed rules. Max --WQdwa7Awn2uo5LLUVaEXsOLItD7LJJckh-- --eoCRQ30c29XCIi7WoXjD7O8gu4FHKqgWr Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAEBCAAGBQJW4GhjAAoJEDuxQgLoOKytT/8H/iIbVcUYt0uQt+WbXfDZAFmX 5qCgSA0JSKXPSJARvFH05Igc6w9UbzQaUdsPYnZiPiugcHUZYtnROYi6g1ZxLyt+ nI9Y89tS+zQLIbIdPRyhLJbuttv+wJoAYCtleivnY2yFfftRpKbZEBrhwQS4FMp0 vE+vfazDqIk1FFwwaBfT3j/EmiSO0hNH2L+stnoV4ibX2wdPawn4+5wdmzmDyDAd IKUVbPmslY7ec1c9KYdneIzbySr0lOX6W7gD8kxz5s49CKSF93VngkEeKdj39v4S I8IxN0/ndbWnWWZpbRWSsaQn29KUNyMrzjkK9CtsVBDHVdOWGjYQHrbeJNuMxDw= =32ln -----END PGP SIGNATURE----- --eoCRQ30c29XCIi7WoXjD7O8gu4FHKqgWr--