about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Src/compat.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/Src/compat.c b/Src/compat.c
index ba077d3a0..b8e1a6f0f 100644
--- a/Src/compat.c
+++ b/Src/compat.c
@@ -376,7 +376,7 @@ zgetcwd(void)
     return zgetdir(NULL);
 }
 
-/* chdir with arbitrary long pathname.  Returns 0 on success, 0 on normal *
+/* chdir with arbitrary long pathname.  Returns 0 on success, -1 on normal *
  * failure and -2 when chdir failed and the current directory is lost.  */
 
 /**/
@@ -418,17 +418,16 @@ zchdir(char *dir)
 	dir = s;
     }
 #ifdef HAVE_FCHDIR
-    if (currdir == -1 || (currdir >= 0 && fchdir(currdir))) {
-	if (currdir >= 0)
+    if (currdir >= 0) {
+	if (fchdir(currdir) < 0) {
 	    close(currdir);
-	return -2;
-    }
-    if (currdir >= 0)
+	    return -2;
+	}
 	close(currdir);
-    return -1;
-#else
-    return currdir == -2 ? -1 : -2;
+	return -1;
+    }
 #endif
+    return currdir == -2 ? -1 : -2;
 }
 
 /*