Module: wine Branch: oldstable Commit: a58b3b63fad59645a5b04a16259718660ce2af80 URL: https://gitlab.winehq.org/wine/wine/-/commit/a58b3b63fad59645a5b04a162597186...
Author: Hans Leidekker hans@codeweavers.com Date: Tue Oct 25 11:21:28 2022 +0200
wbemprox: WQL string comparisons are case insensitive.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53832 (cherry picked from commit 7bfa058a0b89e6a4f24dd43db9a0ea5c1a304b71) Conflicts: dlls/wbemprox/tests/query.c Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
dlls/wbemprox/query.c | 12 ++++++------ dlls/wbemprox/tests/query.c | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/dlls/wbemprox/query.c b/dlls/wbemprox/query.c index 63007565766..92e78672914 100644 --- a/dlls/wbemprox/query.c +++ b/dlls/wbemprox/query.c @@ -118,22 +118,22 @@ static HRESULT eval_strcmp( UINT op, const WCHAR *lstr, const WCHAR *rstr, LONGL switch (op) { case OP_EQ: - *val = !wcscmp( lstr, rstr ); + *val = !wcsicmp( lstr, rstr ); break; case OP_GT: - *val = wcscmp( lstr, rstr ) > 0; + *val = wcsicmp( lstr, rstr ) > 0; break; case OP_LT: - *val = wcscmp( lstr, rstr ) < 0; + *val = wcsicmp( lstr, rstr ) < 0; break; case OP_LE: - *val = wcscmp( lstr, rstr ) <= 0; + *val = wcsicmp( lstr, rstr ) <= 0; break; case OP_GE: - *val = wcscmp( lstr, rstr ) >= 0; + *val = wcsicmp( lstr, rstr ) >= 0; break; case OP_NE: - *val = wcscmp( lstr, rstr ); + *val = wcsicmp( lstr, rstr ); break; case OP_LIKE: *val = eval_like( lstr, rstr ); diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c index 583ae578efa..ea2abad73a5 100644 --- a/dlls/wbemprox/tests/query.c +++ b/dlls/wbemprox/tests/query.c @@ -2095,6 +2095,28 @@ static void test_Win32_LogicalDisk( IWbemServices *services ) IWbemClassObject_Release( obj ); }
+ IEnumWbemClassObject_Release( result ); + SysFreeString( query ); + + query = SysAllocString( L"SELECT * FROM Win32_LogicalDisk WHERE DeviceID > 'b:' AND DeviceID < 'd:'" ); + hr = IWbemServices_ExecQuery( services, wql, query, 0, NULL, &result ); + ok( hr == S_OK, "got %#x\n", hr ); + count = 0; + hr = IEnumWbemClassObject_Next( result, 10000, 1, &obj, &count ); + ok( hr == S_OK, "got %#x\n", hr ); + ok( count == 1, "got %u\n", count ); + IWbemClassObject_Release( obj ); + SysFreeString( query ); + + query = SysAllocString( L"SELECT * FROM Win32_LogicalDisk WHERE DeviceID = 'C:'" ); + hr = IWbemServices_ExecQuery( services, wql, query, 0, NULL, &result ); + ok( hr == S_OK, "got %#x\n", hr ); + count = 0; + hr = IEnumWbemClassObject_Next( result, 10000, 1, &obj, &count ); + ok( hr == S_OK, "got %#x\n", hr ); + ok( count == 1, "got %u\n", count ); + IWbemClassObject_Release( obj ); + SysFreeString( query ); IEnumWbemClassObject_Release( result ); SysFreeString( query ); SysFreeString( wql );