Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56134
-- v4: Apply 1 suggestion(s) to 1 file(s)
From: Zsolt Vadasz zsolt_vadasz@protonmail.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56134 --- dlls/msvcrt/environ.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcrt/environ.c b/dlls/msvcrt/environ.c index 063a9254c67..aa857afa615 100644 --- a/dlls/msvcrt/environ.c +++ b/dlls/msvcrt/environ.c @@ -125,7 +125,7 @@ static int env_get_index(const char *name) len = strlen(name); for (i = 0; MSVCRT__environ[i]; i++) { - if (!strncmp(name, MSVCRT__environ[i], len) && MSVCRT__environ[i][len] == '=') + if (!strnicmp(name, MSVCRT__environ[i], len) && MSVCRT__environ[i][len] == '=') return i; } return i; @@ -138,7 +138,7 @@ static int wenv_get_index(const wchar_t *name) len = wcslen(name); for (i = 0; MSVCRT__wenviron[i]; i++) { - if (!wcsncmp(name, MSVCRT__wenviron[i], len) && MSVCRT__wenviron[i][len] == '=') + if (!wcsnicmp(name, MSVCRT__wenviron[i], len) && MSVCRT__wenviron[i][len] == '=') return i; } return i;
From: Zsolt Vadasz zsolt_vadasz@protonmail.com
--- dlls/msvcrt/tests/environ.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)
diff --git a/dlls/msvcrt/tests/environ.c b/dlls/msvcrt/tests/environ.c index aab14a422b3..777bc447b66 100644 --- a/dlls/msvcrt/tests/environ.c +++ b/dlls/msvcrt/tests/environ.c @@ -421,6 +421,28 @@ static void test_child_env(char** argv) free( env ); }
+static void test_case_insensitive(void) +{ + const char *uppercase_env = getenv("APPDATA"); + const char *lowercase_env = getenv("appdata"); + const wchar_t *uppercase_wenv = _wgetenv(L"APPDATA"); + const wchar_t *lowercase_wenv = _wgetenv(L"appdata"); + char *bar; + wchar_t *foo; + ok (uppercase_env == lowercase_env, "getenv() must be case insensitive, %p should be %p\n", + lowercase_env, uppercase_env); + ok (uppercase_wenv == lowercase_wenv, "_wgetenv() must be case insensitive, %p should be %p\n", + lowercase_wenv, uppercase_wenv); + ok (!_putenv_s("fOo", "bar"), "Failed to set FOO=bar\n"); + ok (!p_wputenv_s(L"BaR", L"foo"), "Failed to set BAR=foo\n"); + ok (!_putenv_s("FOO", "BAR"), "Failed to set FOO=BAR\n"); + ok (!p_wputenv_s(L"BAR", L"FOO"), "Failed to set BAR=FOO\n"); + foo = _wgetenv(L"BaR"); + bar = getenv("fOo"); + ok (!strnicmp(bar, "BAR", strlen(bar)), "_putenv_s() must be case insensitive\n"); + ok (!_wcsnicmp(foo, L"FOO", wcslen(foo)), "_wputenv_s() must be case insensitive\n"); +} + START_TEST(environ) { char **argv; @@ -443,4 +465,5 @@ START_TEST(environ) test_environment_manipulation(); test_child_env(argv); test_system(); + test_case_insensitive(); }
From: Piotr Caban piotr@codeweavers.com
--- dlls/msvcrt/tests/environ.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/dlls/msvcrt/tests/environ.c b/dlls/msvcrt/tests/environ.c index 777bc447b66..8bc2230b159 100644 --- a/dlls/msvcrt/tests/environ.c +++ b/dlls/msvcrt/tests/environ.c @@ -427,20 +427,21 @@ static void test_case_insensitive(void) const char *lowercase_env = getenv("appdata"); const wchar_t *uppercase_wenv = _wgetenv(L"APPDATA"); const wchar_t *lowercase_wenv = _wgetenv(L"appdata"); - char *bar; - wchar_t *foo; - ok (uppercase_env == lowercase_env, "getenv() must be case insensitive, %p should be %p\n", - lowercase_env, uppercase_env); - ok (uppercase_wenv == lowercase_wenv, "_wgetenv() must be case insensitive, %p should be %p\n", - lowercase_wenv, uppercase_wenv); - ok (!_putenv_s("fOo", "bar"), "Failed to set FOO=bar\n"); - ok (!p_wputenv_s(L"BaR", L"foo"), "Failed to set BAR=foo\n"); - ok (!_putenv_s("FOO", "BAR"), "Failed to set FOO=BAR\n"); - ok (!p_wputenv_s(L"BAR", L"FOO"), "Failed to set BAR=FOO\n"); - foo = _wgetenv(L"BaR"); - bar = getenv("fOo"); - ok (!strnicmp(bar, "BAR", strlen(bar)), "_putenv_s() must be case insensitive\n"); - ok (!_wcsnicmp(foo, L"FOO", wcslen(foo)), "_wputenv_s() must be case insensitive\n"); + + ok( uppercase_env == lowercase_env, "getenv() must be case insensitive, %p should be %p\n", + lowercase_env, uppercase_env ); + ok( uppercase_wenv == lowercase_wenv, "_wgetenv() must be case insensitive, %p should be %p\n", + lowercase_wenv, uppercase_wenv ); + + ok( !_putenv("cAt=bar"), "Failed to set CAT=bar\n" ); + ok( !_putenv("CAT=BAR"), "Failed to set CAT=BAR\n" ); + ok( !strcmp(getenv("cAt"), "BAR"), "_putenv() must be case insensitive\n" ); + + ok( !_wputenv(L"cAt=bar"), "Failed to set CAT=bar\n" ); + ok( !_wputenv_s(L"CAT=BAR"), "Failed to set CAT=BAR\n" ); + ok( !wcscmp(_wgetenv(L"cAt"), L"BAR"), "_wputenv() must be case insensitive\n" ); + + _putenv("cat="); }
START_TEST(environ)
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=141561
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w7u_adm (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w7u_el (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w8 (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w8adm (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w864 (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w1064v1507 (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w1064v1809 (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w1064_tsign (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w10pro64 (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w10pro64_en_AE_u8 (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w11pro64 (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== w7pro64 (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w864 (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w1064v1507 (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w1064v1809 (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w1064_2qxl (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w1064_adm (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w1064_tsign (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w10pro64 (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w10pro64_ar (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w10pro64_ja (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w10pro64_zh_CN (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== w11pro64_amd (64 bit report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11 (32 bit report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11 (32 bit ar:MA report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11 (32 bit de report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11 (32 bit fr report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11 (32 bit he:IL report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11 (32 bit hi:IN report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11 (32 bit ja:JP report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11 (32 bit zh:CN report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11b (32 bit WoW report) ===
msvcrt: environ.c:442: Test failed: _wputenv() must be case insensitive
=== debian11b (64 bit WoW report) ===
msvcrt: environ.c:441: Test failed: Failed to set CAT=BAR environ.c:442: Test failed: _wputenv() must be case insensitive
Please fix the compilation error and merge last 2 patches.