aboutsummaryrefslogtreecommitdiff
path: root/src/burn/engine/condition.cpp
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2025-11-01 21:52:31 -0700
committerRob Mensching <rob@firegiant.com>2025-11-03 14:49:39 -0800
commitd2ba0da55725f2908b67e1470afc7cfd71cb3d1f (patch)
treec2a1db61c5fac031c698976106bba2c453d85ded /src/burn/engine/condition.cpp
parent4d626c294c4783d454e27ea4e5614037dac8576e (diff)
downloadwix-d2ba0da55725f2908b67e1470afc7cfd71cb3d1f.tar.gz
wix-d2ba0da55725f2908b67e1470afc7cfd71cb3d1f.tar.bz2
wix-d2ba0da55725f2908b67e1470afc7cfd71cb3d1f.zip
Use CompareStringOrdinal() instead of CompareString() case-sensitive
This commit moves to the modern CompareStringOrdinal() for all case-sensitve uses of CompareString() with the invariant locale. Resolves 6947
Diffstat (limited to 'src/burn/engine/condition.cpp')
-rw-r--r--src/burn/engine/condition.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/burn/engine/condition.cpp b/src/burn/engine/condition.cpp
index ecce2d5c..3719ce79 100644
--- a/src/burn/engine/condition.cpp
+++ b/src/burn/engine/condition.cpp
@@ -928,7 +928,7 @@ static HRESULT CompareStringValues(
928 ) 928 )
929{ 929{
930 HRESULT hr = S_OK; 930 HRESULT hr = S_OK;
931 DWORD dwCompareString = (comparison & INSENSITIVE) ? NORM_IGNORECASE : 0; 931 BOOL fIgnoreCase = (comparison & INSENSITIVE) ? TRUE : FALSE;
932 size_t cchLeftSize = 0; 932 size_t cchLeftSize = 0;
933 size_t cchRightSize = 0; 933 size_t cchRightSize = 0;
934 int cchLeft = 0; 934 int cchLeft = 0;
@@ -958,7 +958,7 @@ static HRESULT CompareStringValues(
958 case BURN_SYMBOL_TYPE_EQ_I: 958 case BURN_SYMBOL_TYPE_EQ_I:
959 case BURN_SYMBOL_TYPE_NE_I: 959 case BURN_SYMBOL_TYPE_NE_I:
960 { 960 {
961 int i = ::CompareStringW(LOCALE_INVARIANT, dwCompareString, wzLeftOperand, cchLeft, wzRightOperand, cchRight); 961 int i = ::CompareStringOrdinal(wzLeftOperand, cchLeft, wzRightOperand, cchRight, fIgnoreCase);
962 hr = CompareIntegerValues(comparison, i, CSTR_EQUAL, pfResult); 962 hr = CompareIntegerValues(comparison, i, CSTR_EQUAL, pfResult);
963 } 963 }
964 break; 964 break;
@@ -967,7 +967,7 @@ static HRESULT CompareStringValues(
967 // test if left string contains right string 967 // test if left string contains right string
968 for (int i = 0; (i + cchRight) <= cchLeft; ++i) 968 for (int i = 0; (i + cchRight) <= cchLeft; ++i)
969 { 969 {
970 if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, dwCompareString, wzLeftOperand + i, cchRight, wzRightOperand, cchRight)) 970 if (CSTR_EQUAL == ::CompareStringOrdinal(wzLeftOperand + i, cchRight, wzRightOperand, cchRight, fIgnoreCase))
971 { 971 {
972 *pfResult = TRUE; 972 *pfResult = TRUE;
973 ExitFunction(); 973 ExitFunction();
@@ -978,12 +978,12 @@ static HRESULT CompareStringValues(
978 case BURN_SYMBOL_TYPE_HIEQ: 978 case BURN_SYMBOL_TYPE_HIEQ:
979 case BURN_SYMBOL_TYPE_HIEQ_I: 979 case BURN_SYMBOL_TYPE_HIEQ_I:
980 // test if left string starts with right string 980 // test if left string starts with right string
981 *pfResult = cchLeft >= cchRight && CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, dwCompareString, wzLeftOperand, cchRight, wzRightOperand, cchRight); 981 *pfResult = cchLeft >= cchRight && CSTR_EQUAL == ::CompareStringOrdinal(wzLeftOperand, cchRight, wzRightOperand, cchRight, fIgnoreCase);
982 break; 982 break;
983 case BURN_SYMBOL_TYPE_LOEQ: 983 case BURN_SYMBOL_TYPE_LOEQ:
984 case BURN_SYMBOL_TYPE_LOEQ_I: 984 case BURN_SYMBOL_TYPE_LOEQ_I:
985 // test if left string ends with right string 985 // test if left string ends with right string
986 *pfResult = cchLeft >= cchRight && CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, dwCompareString, wzLeftOperand + (cchLeft - cchRight), cchRight, wzRightOperand, cchRight); 986 *pfResult = cchLeft >= cchRight && CSTR_EQUAL == ::CompareStringOrdinal(wzLeftOperand + (cchLeft - cchRight), cchRight, wzRightOperand, cchRight, fIgnoreCase);
987 break; 987 break;
988 default: 988 default:
989 ExitFunction1(hr = E_INVALIDARG); 989 ExitFunction1(hr = E_INVALIDARG);