json-streamer: Don't leak tokens on incomplete parse
commitebe0376e8cd0a6b2318096992a0902663d58e522
authorEric Blake <eblake@redhat.com>
Wed, 18 May 2016 21:46:52 +0000 (18 15:46 -0600)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Thu, 4 Aug 2016 21:34:10 +0000 (4 16:34 -0500)
tree99495b1414c92452164ad3e5e3498d5e6515d574
parent9520c6cb1f7e0c6e61c318c1022c64e4ed776335
json-streamer: Don't leak tokens on incomplete parse

Valgrind complained about a number of leaks in
tests/check-qobject-json:

==12657==    definitely lost: 17,247 bytes in 1,234 blocks

All of which had the same root cause: on an incomplete parse,
we were abandoning the token queue without cleaning up the
allocated data within each queue element.  Introduced in
commit 95385fe, when we switched from QList (which recursively
frees contents) to g_queue (which does not).

We don't yet require glib 2.32 with its g_queue_free_full(),
so open-code it instead.

CC: qemu-stable@nongnu.org
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <1463608012-12760-1-git-send-email-eblake@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
(cherry picked from commit ba4dba54347d5062436a8553f527dbbed6dcf069)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
qobject/json-streamer.c