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.
This commit is contained in:
parent
49e7f54d2f
commit
e2641092b8
1 changed files with 2 additions and 5 deletions
|
@ -794,8 +794,8 @@ Imlib_Image load_image(const char *path, int cached)
|
||||||
static unsigned long counter = 0;
|
static unsigned long counter = 0;
|
||||||
if (debug_icons)
|
if (debug_icons)
|
||||||
fprintf(stderr, "tint2: loading icon %s\n", path);
|
fprintf(stderr, "tint2: loading icon %s\n", path);
|
||||||
#ifdef HAVE_RSVG
|
|
||||||
image = imlib_load_image(path);
|
image = imlib_load_image(path);
|
||||||
|
#ifdef HAVE_RSVG
|
||||||
if (!image && g_str_has_suffix(path, ".svg")) {
|
if (!image && g_str_has_suffix(path, ".svg")) {
|
||||||
char tmp_filename[128];
|
char tmp_filename[128];
|
||||||
snprintf(tmp_filename, sizeof(tmp_filename), "/tmp/tint2-%d-%lu.png", (int)getpid(), counter);
|
snprintf(tmp_filename, sizeof(tmp_filename), "/tmp/tint2-%d-%lu.png", (int)getpid(), counter);
|
||||||
|
@ -825,11 +825,8 @@ Imlib_Image load_image(const char *path, int cached)
|
||||||
unlink(tmp_filename);
|
unlink(tmp_filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
image = imlib_load_image(path);
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
imlib_context_set_image(image);
|
imlib_context_set_image(image);
|
||||||
imlib_image_set_changes_on_disk();
|
imlib_image_set_changes_on_disk();
|
||||||
return image;
|
return image;
|
||||||
|
|
Loading…
Reference in a new issue