diff --git a/lib/dircallback.c b/lib/dircallback.c index 8497bee..ed36ee2 100644 --- a/lib/dircallback.c +++ b/lib/dircallback.c @@ -37,7 +37,7 @@ int run_in_dir (const struct saved_cwd *there, int (*callback)(void*), void *usercontext) { - int err, saved_errno; + int err = -1, saved_errno; struct saved_cwd here; if (0 == save_cwd (&here)) { @@ -50,6 +50,10 @@ run_in_dir (const struct saved_cwd *there, { openat_restore_fail (errno); } + + if (restore_cwd (&here) != 0) + openat_restore_fail (errno); + free_cwd (&here); } else