fix memory leaks in gplugin_file_source

Review Request #2255 — Created Feb. 20, 2023 and submitted — Latest diff uploaded

Information

gplugin/gplugin
default

Reviewers

fix memory leaks in gplugin_file_source

leaks encountered:

libpurple test_contact_info and test_person

==5998== 16 bytes in 1 blocks are definitely lost in loss record 1,996 of 6,277
==5998==    at 0x48417E4: malloc (vg_replace_malloc.c:393)
==5998==    by 0x4A6FA18: g_malloc (in /usr/lib64/libglib-2.0.so.0.7400.4)
==5998==    by 0x4A88540: g_slice_alloc (in /usr/lib64/libglib-2.0.so.0.7400.4)
==5998==    by 0x4A89675: g_slist_prepend (in /usr/lib64/libglib-2.0.so.0.7400.4)
==5998==    by 0x4F0DA9E: gplugin_file_source_add_loader (gplugin-file-source.c:112)
==5998==    by 0x4F0DCF1: gplugin_file_source_update_loaders (gplugin-file-source.c:179)
==5998==    by 0x4F0E971: gplugin_file_source_constructed (gplugin-file-source.c:524)
==5998==    by 0x49CF002: ??? (in /usr/lib64/libgobject-2.0.so.0.7400.4)
==5998==    by 0x49D0C33: g_object_new_valist (in /usr/lib64/libgobject-2.0.so.0.7400.4)
==5998==    by 0x49D1250: g_object_new (in /usr/lib64/libgobject-2.0.so.0.7400.4)
==5998==    by 0x4F0EC51: gplugin_file_source_new (gplugin-file-source.c:607)
==5998==    by 0x4F08019: gplugin_manager_refresh (gplugin-manager.c:874)

gplugin tests

==23357== 456 (16 direct, 440 indirect) bytes in 1 blocks are definitely lost in loss record 535 of 557
==23357==    at 0x48417E4: malloc (vg_replace_malloc.c:393)
==23357==    by 0x48E4828: g_malloc (in /usr/lib64/libglib-2.0.so.0.7400.5)
==23357==    by 0x48FD281: g_slice_alloc (in /usr/lib64/libglib-2.0.so.0.7400.5)
==23357==    by 0x48FE6A8: g_slist_copy_deep (in /usr/lib64/libglib-2.0.so.0.7400.5)
==23357==    by 0x485B252: gplugin_manager_find_plugins (gplugin-manager.c:934)
==23357==    by 0x4861216: gplugin_file_source_scan (gplugin-file-source.c:349)
==23357==    by 0x48622A9: gplugin_source_scan (gplugin-source.c:66)
==23357==    by 0x485B041: gplugin_manager_refresh (gplugin-manager.c:881)
==23357==    by 0x109464: test_gplugin_init_uninit_with_double_refresh_plugins (test-core.c:115)
==23357==    by 0x49079DD: ??? (in /usr/lib64/libglib-2.0.so.0.7400.5)
==23357==    by 0x490774C: ??? (in /usr/lib64/libglib-2.0.so.0.7400.5)
==23357==    by 0x4907EE1: g_test_run_suite (in /usr/lib64/libglib-2.0.so.0.7400.5)

Ran all gplugin tests and test_contact_info and test_person from libpurple in valgrind without encountering above leaks or any invalid reads/writes.

Commits

Files