summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2020-06-01 15:16:23 +0200
committerAleksander Morgado <aleksander@aleksander.es>2020-06-01 15:28:52 +0200
commitd848b10d2479dd2d7a3e2c6330ca72b8902f829d (patch)
tree965e5545481958bdced363bc7aafdb4721c30e11
parent3b35bbd47bc8accd42eed2c22070557104f09d27 (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.c11
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,