fix: thumbnail leak when removing the last file (#423)
bf6c062
tried to fixed the thumbnail leak, but it was done inside a `if (n+1 < filecnt)` branch, meaning the thumbnail was still leaking away whenever the last file was removed. we need to unload the thumb regardless of whether it's in the middle or not. this bug was caught due to the recent `assert`s that were added in01f3cf2
. Closes: https://codeberg.org/nsxiv/nsxiv/issues/422 Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/423 Reviewed-by: eylles <eylles@noreply.codeberg.org> Reviewed-by: explosion-mental <explosion-mental@noreply.codeberg.org>
This commit is contained in:
parent
8f0322c2e3
commit
19b47192f2
6
main.c
6
main.c
@ -195,13 +195,11 @@ void remove_file(int n, bool manual)
|
|||||||
if (files[n].path != files[n].name)
|
if (files[n].path != files[n].name)
|
||||||
free((void*) files[n].path);
|
free((void*) files[n].path);
|
||||||
free((void*) files[n].name);
|
free((void*) files[n].name);
|
||||||
|
if (tns.thumbs != NULL)
|
||||||
|
tns_unload(&tns, n);
|
||||||
|
|
||||||
if (n + 1 < filecnt) {
|
if (n + 1 < filecnt) {
|
||||||
if (tns.thumbs != NULL) {
|
if (tns.thumbs != NULL) {
|
||||||
if (tns.thumbs[n].im != NULL) {
|
|
||||||
imlib_context_set_image(tns.thumbs[n].im);
|
|
||||||
imlib_free_image_and_decache();
|
|
||||||
}
|
|
||||||
memmove(tns.thumbs + n, tns.thumbs + n + 1, (filecnt - n - 1) *
|
memmove(tns.thumbs + n, tns.thumbs + n + 1, (filecnt - n - 1) *
|
||||||
sizeof(*tns.thumbs));
|
sizeof(*tns.thumbs));
|
||||||
memset(tns.thumbs + filecnt - 1, 0, sizeof(*tns.thumbs));
|
memset(tns.thumbs + filecnt - 1, 0, sizeof(*tns.thumbs));
|
||||||
|
Loading…
Reference in New Issue
Block a user