all repos — tint2 @ e2641092b8515ca2286d233ec1b5caa4ee1a37f0

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

Fix imlib image leak

Double-adding the image caused imlib's reference count to increment
twice, requiring us to free it twice to actually release the cached
image, but we only ever free it once.

Fixes #704, likely #721 (leak is not present with -DENABLE_RSVG=OFF),
possibly #650 based on connection to execp, maybe others since this was
introduced nearly 6 years ago in 1d02b858 in launcher-specific code.
Adam M. Trofa 5453854+amptrofa@users.noreply.github.com
commit

e2641092b8515ca2286d233ec1b5caa4ee1a37f0

parent

49e7f54d2fd3e3321f8abc42cd6076bea517732e

1 files changed, 2 insertions(+), 5 deletions(-)

jump to
M src/util/common.csrc/util/common.c

@@ -794,8 +794,8 @@ Imlib_Image image;

static unsigned long counter = 0; if (debug_icons) fprintf(stderr, "tint2: loading icon %s\n", path); -#ifdef HAVE_RSVG image = imlib_load_image(path); +#ifdef HAVE_RSVG if (!image && g_str_has_suffix(path, ".svg")) { char tmp_filename[128]; snprintf(tmp_filename, sizeof(tmp_filename), "/tmp/tint2-%d-%lu.png", (int)getpid(), counter);

@@ -825,11 +825,8 @@ image = imlib_load_image_immediately(tmp_filename);

unlink(tmp_filename); } } - } else + } #endif - { - image = imlib_load_image(path); - } imlib_context_set_image(image); imlib_image_set_changes_on_disk(); return image;