From: huangqinjin huangqinjin@gmail.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57137 --- programs/cmd/builtins.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index d7c5090d17f..a57055a6d97 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -1806,6 +1806,8 @@ RETURN_CODE WCMD_pushd(const WCHAR *args)
RETURN_CODE WCMD_popd(void) { + RETURN_CODE return_code; + int errorlevel_backup; struct env_stack *temp = pushd_directories;
if (!pushd_directories) @@ -1813,10 +1815,16 @@ RETURN_CODE WCMD_popd(void)
/* pop the old environment from the stack, and make it the current dir */ pushd_directories = temp->next; - SetCurrentDirectoryW(temp->strings); + /* Change directory using CD code with /D parameter */ + lstrcpyW(quals, L"/D"); + errorlevel_backup = errorlevel; + return_code = WCMD_setshow_default(temp->strings); + if (return_code == NO_ERROR) { + errorlevel = errorlevel_backup; + } free(temp->strings); free(temp); - return NO_ERROR; + return return_code; }
/****************************************************************************