From be65077e3f2778e8c80358a65a2ec0ba70104578 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Wed, 17 Aug 2016 15:35:42 +0000 Subject: [PATCH] [KERNEL32] Sync sortkey.c with Wine Staging 1.9.16. CORE-10771 CORE-11866 svn path=/trunk/; revision=72241 --- .../win32/kernel32/winnls/string/sortkey.c | 46 ++++++++++++++----- reactos/media/doc/README.WINE | 2 +- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/reactos/dll/win32/kernel32/winnls/string/sortkey.c b/reactos/dll/win32/kernel32/winnls/string/sortkey.c index 4bf57ccd313..5ab4570649c 100644 --- a/reactos/dll/win32/kernel32/winnls/string/sortkey.c +++ b/reactos/dll/win32/kernel32/winnls/string/sortkey.c @@ -20,8 +20,10 @@ #include +#ifdef __REACTOS__ #define get_char_typeW(x) iswctype((x) >> 8, (x) & 0xFF) -extern int get_decomposition(WCHAR src, WCHAR *dst, unsigned int dstlen); +#endif +extern unsigned int wine_decompose( WCHAR ch, WCHAR *dst, unsigned int dstlen ); extern const unsigned int collation_table[]; /* @@ -40,11 +42,10 @@ int wine_get_sortkey(int flags, const WCHAR *src, int srclen, char *dst, int dst key_len[0] = key_len[1] = key_len[2] = key_len[3] = 0; for (; srclen; srclen--, src++) { - int decomposed_len = 1;/*get_decomposition(*src, dummy, 4);*/ + unsigned int i, decomposed_len = 1;/*wine_decompose(*src, dummy, 4);*/ dummy[0] = *src; if (decomposed_len) { - int i; for (i = 0; i < decomposed_len; i++) { WCHAR wch = dummy[i]; @@ -98,11 +99,10 @@ int wine_get_sortkey(int flags, const WCHAR *src, int srclen, char *dst, int dst for (; srclen; srclen--, src++) { - int decomposed_len = 1;/*get_decomposition(*src, dummy, 4);*/ + unsigned int i, decomposed_len = 1;/*wine_decompose(*src, dummy, 4);*/ dummy[0] = *src; if (decomposed_len) { - int i; for (i = 0; i < decomposed_len; i++) { WCHAR wch = dummy[i]; @@ -225,8 +225,16 @@ static inline int compare_unicode_weights(int flags, const WCHAR *str1, int len1 len1--; len2--; } - if (len1 && !*str1) len1--; - if (len2 && !*str2) len2--; + while (len1 && !*str1) + { + str1++; + len1--; + } + while (len2 && !*str2) + { + str2++; + len2--; + } return len1 - len2; } @@ -276,8 +284,16 @@ static inline int compare_diacritic_weights(int flags, const WCHAR *str1, int le len1--; len2--; } - if (len1 && !*str1) len1--; - if (len2 && !*str2) len2--; + while (len1 && !*str1) + { + str1++; + len1--; + } + while (len2 && !*str2) + { + str2++; + len2--; + } return len1 - len2; } @@ -327,8 +343,16 @@ static inline int compare_case_weights(int flags, const WCHAR *str1, int len1, len1--; len2--; } - if (len1 && !*str1) len1--; - if (len2 && !*str2) len2--; + while (len1 && !*str1) + { + str1++; + len1--; + } + while (len2 && !*str2) + { + str2++; + len2--; + } return len1 - len2; } diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 28a28cb7951..1b696c277b0 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -283,7 +283,7 @@ kernel32 - reactos/dll/win32/kernel32/winnls/string/lang.c # Synced in r52754 reactos/dll/win32/kernel32/winnls/string/lcformat.c # Synced to WineStaging-1.7.55 reactos/dll/win32/kernel32/winnls/string/nls.c # Synced in r52754 - reactos/dll/win32/kernel32/winnls/string/sortkey.c # Synced to WineStaging-1.7.55 + reactos/dll/win32/kernel32/winnls/string/sortkey.c # Synced to WineStaging-1.9.16 msvcrt - reactos/lib/sdk/crt/except/cpp.c # Synced at 20080528