diff options
Diffstat (limited to 'cache.c')
-rw-r--r-- | cache.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -215,19 +215,25 @@ static int fill_slot(struct cache_slot *slot) | |||
215 | return errno; | 215 | return errno; |
216 | 216 | ||
217 | /* Redirect stdout to lockfile */ | 217 | /* Redirect stdout to lockfile */ |
218 | if (dup2(slot->lock_fd, STDOUT_FILENO) == -1) | 218 | if (dup2(slot->lock_fd, STDOUT_FILENO) == -1) { |
219 | close(tmp); | ||
219 | return errno; | 220 | return errno; |
221 | } | ||
220 | 222 | ||
221 | /* Generate cache content */ | 223 | /* Generate cache content */ |
222 | slot->fn(); | 224 | slot->fn(); |
223 | 225 | ||
224 | /* update stat info */ | 226 | /* update stat info */ |
225 | if (fstat(slot->lock_fd, &slot->cache_st)) | 227 | if (fstat(slot->lock_fd, &slot->cache_st)) { |
228 | close(tmp); | ||
226 | return errno; | 229 | return errno; |
230 | } | ||
227 | 231 | ||
228 | /* Restore stdout */ | 232 | /* Restore stdout */ |
229 | if (dup2(tmp, STDOUT_FILENO) == -1) | 233 | if (dup2(tmp, STDOUT_FILENO) == -1) { |
234 | close(tmp); | ||
230 | return errno; | 235 | return errno; |
236 | } | ||
231 | 237 | ||
232 | /* Close the temporary filedescriptor */ | 238 | /* Close the temporary filedescriptor */ |
233 | if (close(tmp)) | 239 | if (close(tmp)) |