-rw-r--r-- | cache.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -73,9 +73,9 @@ int cache_refill_overdue(const char *lockfile) 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", @@ -89,8 +89,9 @@ int cache_lock(struct cacheitem *item) 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) |