diff options
| author | Rob Mensching <rob@firegiant.com> | 2025-11-01 21:52:31 -0700 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2025-11-03 14:49:39 -0800 |
| commit | d2ba0da55725f2908b67e1470afc7cfd71cb3d1f (patch) | |
| tree | c2a1db61c5fac031c698976106bba2c453d85ded /src/burn/engine/condition.cpp | |
| parent | 4d626c294c4783d454e27ea4e5614037dac8576e (diff) | |
| download | wix-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.cpp | 10 |
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); |
