nsxiv7d40fae
Do not create cache files for cache files
+10 −7
1 file changed
- M thumbs.c +10 −7
| @@ -327,7 +327,8 @@ int tns_cache_enabled() { | |||
| 327 | 327 | ||
| 328 | 328 | char* tns_cache_filename(const char *filename) { | |
| 329 | 329 | size_t len; | |
| 330 | − | char *cfile, *abspath; | |
| 330 | + | char *cfile = NULL; | |
| 331 | + | const char *abspath; | |
| 331 | 332 | ||
| 332 | 333 | if (!cache_dir || !filename) | |
| 333 | 334 | return NULL; | |
| @@ -336,15 +337,17 @@ char* tns_cache_filename(const char *filename) { | |||
| 336 | 337 | if (!(abspath = absolute_path(filename))) | |
| 337 | 338 | return NULL; | |
| 338 | 339 | } else { | |
| 339 | − | abspath = (char*) s_malloc(strlen(filename) + 1); | |
| 340 | − | strcpy(abspath, filename); | |
| 340 | + | abspath = filename; | |
| 341 | 341 | } | |
| 342 | 342 | ||
| 343 | − | len = strlen(cache_dir) + strlen(abspath) + 6; | |
| 344 | − | cfile = (char*) s_malloc(len); | |
| 345 | − | snprintf(cfile, len, "%s/%s.png", cache_dir, abspath + 1); | |
| 343 | + | if (strncmp(abspath, cache_dir, strlen(cache_dir))) { | |
| 344 | + | len = strlen(cache_dir) + strlen(abspath) + 6; | |
| 345 | + | cfile = (char*) s_malloc(len); | |
| 346 | + | snprintf(cfile, len, "%s/%s.png", cache_dir, abspath + 1); | |
| 347 | + | } | |
| 346 | 348 | ||
| 347 | − | free(abspath); | |
| 349 | + | if (abspath != filename) | |
| 350 | + | free((void*) abspath); | |
| 348 | 351 | ||
| 349 | 352 | return cfile; | |
| 350 | 353 | } | |