summaryrefslogtreecommitdiffstats
path: root/thumbs.c
diff options
context:
space:
mode:
authorBert <ber.t@gmx.com>2011-04-07 18:00:01 +0200
committerBert <ber.t@gmx.com>2011-04-07 18:00:01 +0200
commit7d40faeba6076477645e36034b58e4bf82d4a96c (patch)
tree80450d017b5ba9868919bba8f062858966aaf1a8 /thumbs.c
parent92709b2b2f579300b1c007e5a3ba869e78fcc922 (diff)
downloadnsxiv-7d40faeba6076477645e36034b58e4bf82d4a96c.tar.zst
Do not create cache files for cache files
Diffstat (limited to 'thumbs.c')
-rw-r--r--thumbs.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/thumbs.c b/thumbs.c
index 820fd4b..7c895c1 100644
--- a/thumbs.c
+++ b/thumbs.c
@@ -327,7 +327,8 @@ int tns_cache_enabled() {
char* tns_cache_filename(const char *filename) {
size_t len;
- char *cfile, *abspath;
+ char *cfile = NULL;
+ const char *abspath;
if (!cache_dir || !filename)
return NULL;
@@ -336,15 +337,17 @@ char* tns_cache_filename(const char *filename) {
if (!(abspath = absolute_path(filename)))
return NULL;
} else {
- abspath = (char*) s_malloc(strlen(filename) + 1);
- strcpy(abspath, filename);
+ abspath = filename;
}
- len = strlen(cache_dir) + strlen(abspath) + 6;
- cfile = (char*) s_malloc(len);
- snprintf(cfile, len, "%s/%s.png", cache_dir, abspath + 1);
+ if (strncmp(abspath, cache_dir, strlen(cache_dir))) {
+ len = strlen(cache_dir) + strlen(abspath) + 6;
+ cfile = (char*) s_malloc(len);
+ snprintf(cfile, len, "%s/%s.png", cache_dir, abspath + 1);
+ }
- free(abspath);
+ if (abspath != filename)
+ free((void*) abspath);
return cfile;
}