Skip to content

Commit be3b2c8

Browse files
committed
Print: stop leaking dests allocated by cupsGetDests()
Fixes several LeakSanitizer-detected leaks like: Direct leak of 32 byte(s) in 1 object(s) allocated from: #0 0x7ff195fd474f in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x5474f) #1 0x7ff18e98282d (/usr/lib/x86_64-linux-gnu/libcups.so.2+0x2282d) #2 0x7ff18e9845a5 in _cupsGetDests (/usr/lib/x86_64-linux-gnu/libcups.so.2+0x245a5) #3 0x7ff18e98553b in cupsGetDests2 (/usr/lib/x86_64-linux-gnu/libcups.so.2+0x2553b) #4 0x7ff195da8c8d in dt_get_papers /home/lebedevri/darktable/src/common/cups_print.c:189 #5 0x7ff16987610e #6 0x7ff169879cc2 #7 0x7ff195d42cb7 in dt_lib_load_modules /home/lebedevri/darktable/src/libs/lib.c:718 #8 0x7ff195d45586 in dt_lib_init /home/lebedevri/darktable/src/libs/lib.c:1008 #9 0x7ff195b3e8c7 in dt_init /home/lebedevri/darktable/src/common/darktable.c:889 #10 0x400cb8 in main /home/lebedevri/darktable/src/main.c:24 #11 0x7ff18e3a9b44 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b44) #12 0x400bd8 (/usr/local/bin/darktable+0x400bd8) Indirect leak of 304 byte(s) in 1 object(s) allocated from: #0 0x7ff195fd4a06 in __interceptor_realloc (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x54a06) #1 0x7ff18e9a4a58 in cupsAddOption (/usr/lib/x86_64-linux-gnu/libcups.so.2+0x44a58) #2 0x7ff18e9847f2 in _cupsGetDests (/usr/lib/x86_64-linux-gnu/libcups.so.2+0x247f2) #3 0x7ff18e98553b in cupsGetDests2 (/usr/lib/x86_64-linux-gnu/libcups.so.2+0x2553b) #4 0x7ff195da8c8d in dt_get_papers /home/lebedevri/darktable/src/common/cups_print.c:189 #5 0x7ff16987610e #6 0x7ff169879cc2 #7 0x7ff195d42cb7 in dt_lib_load_modules /home/lebedevri/darktable/src/libs/lib.c:718 #8 0x7ff195d45586 in dt_lib_init /home/lebedevri/darktable/src/libs/lib.c:1008 #9 0x7ff195b3e8c7 in dt_init /home/lebedevri/darktable/src/common/darktable.c:889 #10 0x400cb8 in main /home/lebedevri/darktable/src/main.c:24 #11 0x7ff18e3a9b44 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b44) #12 0x400bd8 (/usr/local/bin/darktable+0x400bd8)
1 parent f8a22cf commit be3b2c8

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

src/common/cups_print.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ GList *dt_get_papers(const char *printer_name)
231231
else
232232
dt_print(DT_DEBUG_PRINT, "[print] cannot connect to printer %s (cancel=%d)\n", printer_name, cancel);
233233
}
234+
235+
cupsFreeDests(num_dests, dests);
234236
#endif
235237

236238
// check now PPD page sizes
@@ -288,6 +290,8 @@ void dt_print_file(const int32_t imgid, const char *filename, const dt_print_inf
288290
dest->options[j].value,
289291
num_options, &options);
290292

293+
cupsFreeDests(num_dests, dests);
294+
291295
// disable cm on CUPS, this is important as dt does the cm
292296

293297
if (*pinfo->printer.profile)

0 commit comments

Comments
 (0)