I can't figure out when this memory is leaked: ==8482== 21 bytes in 1 blocks are definitely lost in loss record 155 of 536 ==8482== at 0x483877F: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==8482== by 0x5FE76A7: __vasprintf_internal (vasprintf.c:71) ==8482== by 0x1AC2A6: xvasprintf (safemalloc.c:104) ==8482== by 0x1AC36A: xasprintf (safemalloc.c:93) ==8482== by 0x1A5990: translit_csname (Ficonv.c:93) ==8482== by 0x1A5DB8: set_iconv_charset_index (Ficonv.c:203) ==8482== by 0x1A5DB8: FiconvSetupConversion (Ficonv.c:437) ==8482== by 0x1A6134: FiconvCharsetToUtf8 (Ficonv.c:548) ==8482== by 0x18F10E: FlocaleEncodeString (Flocale.c:464) ==8482== by 0x19086D: FlocaleTextWidth (Flocale.c:2192) ==8482== by 0x13E299: resize_geometry_window (move_resize.c:1123) ==8482== by 0x158DD6: main (fvwm3.c:2543)
The memory is allocated through Ficonv.c:203: FLC_SET_ICONV_TRANSLIT_CHARSET( fc, fxstrdup( translit_csname( FLC_GET_LOCALE_CHARSET( fc,i)))); This stores it in fc->translit_csname. I've no idea where it's lost. I'd assume that charsets are not ever freed or lost. -- Two more leaks that need to be checked: ==8482== 38 (16 direct, 22 indirect) bytes in 1 blocks are definitely lost in loss record 184 of 536 ==8482== at 0x48386AF: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==8482== by 0x483ADE7: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==8482== by 0x4CE950B: XCreateFontSet (in /usr/lib/x86_64-linux-gnu/libX11.so.6.4.0) ==8482== by 0x18EB64: FlocaleGetFontSet (Flocale.c:1152) ==8482== by 0x18FD81: FlocaleGetFontOrFontSet (Flocale.c:1302) ==8482== by 0x18FD81: FlocaleLoadFont (Flocale.c:1479) ==8482== by 0x14A314: CMD_DefaultFont (builtins.c:3160) ==8482== by 0x1740B4: __execute_command_line (functions.c:669) ==8482== by 0x174CBA: execute_function (functions.c:1240) ==8482== by 0x18B3F2: run_command_stream (read.c:148) ==8482== by 0x18B53B: run_command_file (read.c:256) ==8482== by 0x15903F: main (fvwm3.c:2494) ==8482== ==8482== 38 (16 direct, 22 indirect) bytes in 1 blocks are definitely lost in loss record 185 of 536 ==8482== at 0x48386AF: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==8482== by 0x483ADE7: realloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==8482== by 0x4CE950B: XCreateFontSet (in /usr/lib/x86_64-linux-gnu/libX11.so.6.4.0) ==8482== by 0x18EB64: FlocaleGetFontSet (Flocale.c:1152) ==8482== by 0x18FD81: FlocaleGetFontOrFontSet (Flocale.c:1302) ==8482== by 0x18FD81: FlocaleLoadFont (Flocale.c:1479) ==8482== by 0x14C721: setup_icon_font (add_window.c:1946) ==8482== by 0x14E89F: AddWindow (add_window.c:2414) ==8482== by 0x13698C: HandleMapRequestKeepRaised (events.c:3068) ==8482== by 0x136DC3: HandleMapRequest (events.c:3005) ==8482== by 0x138D50: dispatch_event (events.c:4186) ==8482== by 0x139B1C: HandleEvents (events.c:4232) ==8482== by 0x158DE5: main (fvwm3.c:2547) Ciao Dominik ^_^ ^_^ -- Dominik Vogt