g_variant_builder_add leaks variant builder and type in case of error
This is probably minor, I just noticed it while debugging something else:
Example:
#include <glib.h>
int main(int argc, char **argv) {
g_auto(GVariantBuilder) vb = G_VARIANT_BUILDER_INIT(G_VARIANT_TYPE("a{sv}"));
g_variant_builder_add(&vb, "{sv}", "key", NULL);
GVariant *v = g_variant_ref_sink(g_variant_builder_end(&vb));
g_variant_unref(v);
return 0;
}
Valgrind report:
==257148== 5 bytes in 1 blocks are definitely lost in loss record 6 of 21
==257148== at 0x484586F: malloc (vg_replace_malloc.c:381)
==257148== by 0x48C2911: g_malloc (gmem.c:130)
==257148== by 0x491D99F: g_variant_type_copy (gvarianttype.c:400)
==257148== by 0x490E221: g_variant_builder_init (gvariant.c:3424)
==257148== by 0x491166E: g_variant_valist_new (gvariant.c:5277)
==257148== by 0x4911AF8: g_variant_new_va (gvariant.c:5458)
==257148== by 0x4911E0B: g_variant_builder_add (gvariant.c:5615)
==257148== by 0x4011FF: main (in /home/jens/b)
==257148==
==257148== 108 (16 direct, 92 indirect) bytes in 1 blocks are definitely lost in loss record 19 of 21
==257148== at 0x484A464: calloc (vg_replace_malloc.c:1328)
==257148== by 0x48C2984: g_malloc0 (gmem.c:163)
==257148== by 0x48C2C6B: g_malloc0_n (gmem.c:404)
==257148== by 0x490E4B1: g_variant_builder_init (gvariant.c:3493)
==257148== by 0x491166E: g_variant_valist_new (gvariant.c:5277)
==257148== by 0x4911AF8: g_variant_new_va (gvariant.c:5458)
==257148== by 0x4911E0B: g_variant_builder_add (gvariant.c:5615)
==257148== by 0x4011FF: main (in /home/jens/b)