I think the bug is here. Using SysAllocString instead of SysAllocStringLen I get:
VarBstrCmp returns 1 CompareStringW returns 2
Using SysAllocString, I get that the length of each string is 0. So yeah, they'd be equal.
So, I'm back to where I started: in Windows, these are different characters, but in Wine they're not. How do I fix it?
--Juan