Regression in lstrcmpiA (occurred in late June, NLS related)
Troy Rollo
wine at troy.rollo.name
Wed Oct 1 02:30:22 CDT 2003
When lstrcmpiA was moved from ole2nls.c to locale.c, (around 28th June) the
results of comparisons in some cases became reversed. For example, the
underscore now returns as greater than alphabetic characters, whereas it used
to return as less than alphabetic characters. The older behaviour was
consistent with Win2k.
The output below is from the following source:
---begin test program---
#include <windows.h>
#include <stdio.h>
char *test_strings[] =
{
"_",
"A",
"a",
"z",
"Z",
0
};
void
test_string(char *pch)
{
char **ppch = test_strings;
while (*ppch)
{
printf("%s\t%s\t%d\n", pch, *ppch, lstrcmpiA(pch, *ppch));
++ppch;
}
}
int
main(int argc, char **argv)
{
char **ppch = test_strings;
while (*ppch)
test_string(*ppch++);
return 0;
}
---end test program---
---Wine output from immediately before the change---
_ _ 0sorts
_ A -1
_ a -1
_ z -1
_ Z -1
A _ 1
A A 0
A a 0
A z -1
A Z -1
a _ 1
a A 0
a a 0
a z -1
a Z -1
z _ 1
z A 1
z a 1
z z 0
z Z 0
Z _ 1
Z A 1
Z a 1
Z z 0
Z Z 0
---End---
---Wine output from immediately after the change---
_ _ 0
_ A 1
_ a 1
_ z 1
_ Z 1
A _ -1
A A 0
A a 0
A z -1
A Z -1
a _ -1
a A 0
a a 0
a z -1
a Z -1
z _ -1
z A 1
z a 1
z z 0
z Z 0
Z _ -1
Z A 1
Z a 1
Z z 0
Z Z 0
~---End---
More information about the wine-devel
mailing list