From 7d40faeba6076477645e36034b58e4bf82d4a96c Mon Sep 17 00:00:00 2001 From: Bert Date: Thu, 7 Apr 2011 18:00:01 +0200 Subject: Do not create cache files for cache files --- thumbs.c | 17 ++++++++++------- 1 file 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; } -- cgit v1.2.3