[PATCH] cmd: Do not set errorlevel when successfully changing a variable.

Jinoh Kang jinoh.kang.kr at gmail.com
Sat Nov 27 23:36:58 CST 2021


Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52107
Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
---
 programs/cmd/builtins.c                  | 11 +++--------
 programs/cmd/tests/test_builtins.cmd     |  3 +++
 programs/cmd/tests/test_builtins.cmd.exp |  6 +++---
 3 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index d0a954d90fa..8f4b9ca1498 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -4104,7 +4104,6 @@ void WCMD_setshow_env (WCHAR *s) {
 
   LPVOID env;
   WCHAR *p;
-  BOOL status;
   WCHAR string[MAXSTRING];
 
   if (param1[0] == 0x00 && quals[0] == 0x00) {
@@ -4189,8 +4188,6 @@ void WCMD_setshow_env (WCHAR *s) {
     }
 
   } else {
-    DWORD gle;
-
     /* set "var=value"jim ignores anything after the last quote */
     if (*s=='\"') {
       WCHAR *lastquote;
@@ -4213,12 +4210,10 @@ void WCMD_setshow_env (WCHAR *s) {
     if (!*p) p = NULL;
     WINE_TRACE("set: Setting var '%s' to '%s'\n", wine_dbgstr_w(s),
                wine_dbgstr_w(p));
-    status = SetEnvironmentVariableW(s, p);
-    gle = GetLastError();
-    if ((!status) & (gle == ERROR_ENVVAR_NOT_FOUND)) {
+    if (!SetEnvironmentVariableW(s, p)) {
+      WCMD_print_error();
       errorlevel = 1;
-    } else if (!status) WCMD_print_error();
-    else if (!interactive) errorlevel = 0;
+    }
   }
 }
 
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd
index 47b028207ac..2cc96d32ded 100644
--- a/programs/cmd/tests/test_builtins.cmd
+++ b/programs/cmd/tests/test_builtins.cmd
@@ -448,14 +448,17 @@ for /f "delims==" %%i in ('set WINE_ba') do set %%i=
 for /f "delims==" %%i in ('set WINE_foo') do set %%i=
 set WINE_FOOBAR 2> nul > nul
 echo %ErrorLevel%
+call :setError 1234567890
 set WINE_FOOBAR =  baz
 echo %ErrorLevel%
 echo %WINE_FOOBAR%WINE_FOOBAR not defined
 echo %WINE_FOOBAR %
 set WINE_FOOBAR 2> nul
+call :setError 1234567890
 set WINE_FOOBAR =  baz2
 echo %ErrorLevel%
 echo %WINE_fOObAr %
+call :setError 1234567890
 set WINE_FOOBAR= bar
 echo %ErrorLevel%
 echo %WINE_FOOBAR%
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index 4c7bc3e0c02..d32571e5afb 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -445,13 +445,13 @@ q2
 q3
 ------------ Testing 'set' ------------
 1
-0
+1234567890
 WINE_FOOBAR not defined
   baz
 WINE_FOOBAR =  baz
-0
+1234567890
   baz2
-0
+1234567890
  bar
 WINE_FOOBAR= bar
 WINE_FOOBAR =  baz2
-- 
2.31.1




More information about the wine-devel mailing list