Piotr Caban piotr@codeweavers.com writes:
@@ -206,30 +209,107 @@ static inline int compare_unicode_weights(int flags, const WCHAR *str1, int len1 } }
ce1 = collation_table[collation_table[*str1 >> 8] + (*str1 & 0xff)];ce2 = collation_table[collation_table[*str2 >> 8] + (*str2 & 0xff)];
if (!dlen1){dlen1 = wine_decompose(0, *str1, dstr1, 4);dpos1 = 0;}ce1 = collation_table[collation_table[dstr1[dpos1] >> 8] + (dstr1[dpos1] & 0xff)];if (!(ce1 >> 16)){dpos1++;if (dpos1 == dlen1){str1++;len1--;dlen1 = 0;}continue;}if (!dlen2){dlen2 = wine_decompose(0, *str2, dstr2, 4);dpos2 = 0;}ce2 = collation_table[collation_table[dstr2[dpos2] >> 8] + (dstr2[dpos2] & 0xff)];if (!(ce2 >> 16)){dpos2++;if (dpos2 == dlen2){str2++;len2--;dlen2 = 0;}continue;}
It looks like this could benefit from using some kind of helper function.