"Lei Zhang" thestig@google.com writes:
diff --git a/dlls/oleaut32/vartype.c b/dlls/oleaut32/vartype.c index daeac85..713ebae 100644 --- a/dlls/oleaut32/vartype.c +++ b/dlls/oleaut32/vartype.c @@ -6942,7 +6942,24 @@ HRESULT WINAPI VarBstrCmp(BSTR pbstrLeft, BSTR pbstrRight, LCID lcid, DWORD dwFl if (!pbstrLeft || !*pbstrLeft) { if (!pbstrRight || !*pbstrRight)
return VARCMP_EQ;
{
UINT ll;
UINT lr;
if (lcid)
{
ll = SysStringLen(pbstrLeft);
lr = SysStringLen(pbstrRight);
}
else
{
ll = SysStringByteLen(pbstrLeft);
lr = SysStringByteLen(pbstrRight);
}
if (ll == lr)
return VARCMP_EQ;
return ll < lr ? VARCMP_LT : VARCMP_GT;
}
That's ugly, you shouldn't need such special handling here, you should simply fall through to the normal comparisons which should give the correct results.