diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2020-06-01 15:16:23 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2020-06-01 15:28:52 +0200 |
commit | d848b10d2479dd2d7a3e2c6330ca72b8902f829d (patch) | |
tree | 965e5545481958bdced363bc7aafdb4721c30e11 | |
parent | 3b35bbd47bc8accd42eed2c22070557104f09d27 (diff) |
iface-modem-firmware: plug memleak when listing images
==80079== 1,377 (48 direct, 1,329 indirect) bytes in 1 blocks are definitely lost in loss record 5,200 of 5,232
==80079== at 0x483977F: malloc (vg_replace_malloc.c:309)
==80079== by 0x5025AE9: g_malloc (in /usr/lib/libglib-2.0.so.0.6400.2)
==80079== by 0x5006223: g_slice_alloc (in /usr/lib/libglib-2.0.so.0.6400.2)
==80079== by 0x4FEB59B: ??? (in /usr/lib/libglib-2.0.so.0.6400.2)
==80079== by 0x4FEE378: g_variant_builder_end (in /usr/lib/libglib-2.0.so.0.6400.2)
==80079== by 0x48F8314: mm_firmware_properties_get_dictionary (mm-firmware-properties.c:337)
==80079== by 0x1AAF29: load_current_ready (mm-iface-modem-firmware.c:80)
==80079== by 0x4E68653: ??? (in /usr/lib/libgio-2.0.so.0.6400.2)
==80079== by 0x4E68688: ??? (in /usr/lib/libgio-2.0.so.0.6400.2)
==80079== by 0x502B58E: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.6400.2)
==80079== by 0x502D530: ??? (in /usr/lib/libglib-2.0.so.0.6400.2)
==80079== by 0x502E542: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.6400.2)
-rw-r--r-- | src/mm-iface-modem-firmware.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c index 9268c4b7..5aedc4ad 100644 --- a/src/mm-iface-modem-firmware.c +++ b/src/mm-iface-modem-firmware.c @@ -76,10 +76,13 @@ load_current_ready (MMIfaceModemFirmware *self, /* Build array of dicts */ g_variant_builder_init (&builder, G_VARIANT_TYPE ("aa{sv}")); - for (l = ctx->list; l; l = g_list_next (l)) - g_variant_builder_add_value ( - &builder, - mm_firmware_properties_get_dictionary (MM_FIRMWARE_PROPERTIES (l->data))); + for (l = ctx->list; l; l = g_list_next (l)) { + GVariant *dict; + + dict = mm_firmware_properties_get_dictionary (MM_FIRMWARE_PROPERTIES (l->data)); + g_variant_builder_add_value (&builder, dict); + g_variant_unref (dict); + } mm_gdbus_modem_firmware_complete_list ( ctx->skeleton, |