-rw-r--r-- | cache.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -71,13 +71,13 @@ int cache_refill_overdue(const char *lockfile) return (time(NULL) - st.st_mtime > cgit_cache_max_create_time); } int cache_lock(struct cacheitem *item) { int i = 0; - char *lockfile = fmt("%s.lock", item->name); + char *lockfile = xstrdup(fmt("%s.lock", item->name)); top: if (++i > cgit_max_lock_attempts) die("cache_lock: unable to lock %s: %s", item->name, strerror(errno)); @@ -87,12 +87,13 @@ int cache_lock(struct cacheitem *item) goto top; if (item->fd == NOLOCK && errno == EEXIST && cache_refill_overdue(lockfile) && !unlink(lockfile)) goto top; + free(lockfile); return (item->fd > 0); } int cache_unlock(struct cacheitem *item) { close(item->fd); |