summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBert Münnich <ber.t@posteo.de>2014-10-01 20:25:36 +0200
committerBert Münnich <ber.t@posteo.de>2014-10-01 20:25:36 +0200
commit8db3191f04d52929ec10b1412d282a4ac4cf5240 (patch)
tree0a70be5c813e489d327f03575e5ceee8224fb946
parentddd028eb3ea628855b4bb35ca7fb40562bd87861 (diff)
downloadnsxiv-8db3191f04d52929ec10b1412d282a4ac4cf5240.tar.zst
Fixed segfault on image removal with uninitialized thumbnails; fixes issue #177
-rw-r--r--Makefile2
-rw-r--r--main.c11
2 files changed, 7 insertions, 6 deletions
diff --git a/Makefile b/Makefile
index 73730f4..bc99590 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-VERSION = git-20140930
+VERSION = git-20141001
PREFIX = /usr/local
MANPREFIX = $(PREFIX)/share/man
diff --git a/main.c b/main.c
index 2631c05..31effbd 100644
--- a/main.c
+++ b/main.c
@@ -177,12 +177,13 @@ void remove_file(int n, bool manual)
free((void*) files[n].name);
if (n + 1 < filecnt) {
- memmove(files + n, files + n + 1, (filecnt - n - 1) * sizeof(fileinfo_t));
- memmove(tns.thumbs + n, tns.thumbs + n + 1, (filecnt - n - 1) *
- sizeof(thumb_t));
- memset(tns.thumbs + filecnt - 1, 0, sizeof(thumb_t));
+ if (tns.thumbs != NULL) {
+ memmove(tns.thumbs + n, tns.thumbs + n + 1, (filecnt - n - 1) *
+ sizeof(*tns.thumbs));
+ memset(tns.thumbs + filecnt - 1, 0, sizeof(*tns.thumbs));
+ }
+ memmove(files + n, files + n + 1, (filecnt - n - 1) * sizeof(*files));
}
-
filecnt--;
if (fileidx >= filecnt)
fileidx = filecnt - 1;