jscript: Make compare2_values working with NULL BSTR's.
This commit is contained in:
parent
ec25138a46
commit
9d23f8a771
|
@ -304,7 +304,12 @@ static HRESULT equal2_values(VARIANT *lval, VARIANT *rval, BOOL *ret)
|
||||||
*ret = V_R8(lval) == V_R8(rval);
|
*ret = V_R8(lval) == V_R8(rval);
|
||||||
break;
|
break;
|
||||||
case VT_BSTR:
|
case VT_BSTR:
|
||||||
*ret = !strcmpW(V_BSTR(lval), V_BSTR(rval));
|
if(!V_BSTR(lval))
|
||||||
|
*ret = SysStringLen(V_BSTR(rval))?FALSE:TRUE;
|
||||||
|
else if(!V_BSTR(rval))
|
||||||
|
*ret = SysStringLen(V_BSTR(lval))?FALSE:TRUE;
|
||||||
|
else
|
||||||
|
*ret = !strcmpW(V_BSTR(lval), V_BSTR(rval));
|
||||||
break;
|
break;
|
||||||
case VT_DISPATCH:
|
case VT_DISPATCH:
|
||||||
return disp_cmp(V_DISPATCH(lval), V_DISPATCH(rval), ret);
|
return disp_cmp(V_DISPATCH(lval), V_DISPATCH(rval), ret);
|
||||||
|
|
|
@ -896,4 +896,6 @@ ok(""+str === "test", "''+str = " + str);
|
||||||
|
|
||||||
ok((function (){return 1;})() === 1, "(function (){return 1;})() = " + (function (){return 1;})());
|
ok((function (){return 1;})() === 1, "(function (){return 1;})() = " + (function (){return 1;})());
|
||||||
|
|
||||||
|
ok(createNullBSTR() === '', "createNullBSTR() !== ''");
|
||||||
|
|
||||||
reportSuccess();
|
reportSuccess();
|
||||||
|
|
|
@ -73,6 +73,7 @@ DEFINE_EXPECT(GetItemInfo_testVal);
|
||||||
#define DISPID_GLOBAL_OK 0x1004
|
#define DISPID_GLOBAL_OK 0x1004
|
||||||
#define DISPID_GLOBAL_GETVT 0x1005
|
#define DISPID_GLOBAL_GETVT 0x1005
|
||||||
#define DISPID_GLOBAL_TESTOBJ 0x1006
|
#define DISPID_GLOBAL_TESTOBJ 0x1006
|
||||||
|
#define DISPID_GLOBAL_NULL_BSTR 0x1007
|
||||||
|
|
||||||
static const WCHAR testW[] = {'t','e','s','t',0};
|
static const WCHAR testW[] = {'t','e','s','t',0};
|
||||||
static const CHAR testA[] = "test";
|
static const CHAR testA[] = "test";
|
||||||
|
@ -283,6 +284,10 @@ static HRESULT WINAPI Global_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD
|
||||||
*pid = DISPID_GLOBAL_TESTOBJ;
|
*pid = DISPID_GLOBAL_TESTOBJ;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
if(!strcmp_wa(bstrName, "createNullBSTR")) {
|
||||||
|
*pid = DISPID_GLOBAL_NULL_BSTR;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
if(strict_dispid_check)
|
if(strict_dispid_check)
|
||||||
ok(0, "unexpected call %s\n", debugstr_w(bstrName));
|
ok(0, "unexpected call %s\n", debugstr_w(bstrName));
|
||||||
|
@ -429,6 +434,13 @@ static HRESULT WINAPI Global_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid,
|
||||||
V_VT(pvarRes) = VT_DISPATCH;
|
V_VT(pvarRes) = VT_DISPATCH;
|
||||||
V_DISPATCH(pvarRes) = (IDispatch*)&testObj;
|
V_DISPATCH(pvarRes) = (IDispatch*)&testObj;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
||||||
|
case DISPID_GLOBAL_NULL_BSTR:
|
||||||
|
if(pvarRes) {
|
||||||
|
V_VT(pvarRes) = VT_BSTR;
|
||||||
|
V_BSTR(pvarRes) = NULL;
|
||||||
|
}
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ok(0, "unexpected call %x\n", id);
|
ok(0, "unexpected call %x\n", id);
|
||||||
|
|
Loading…
Reference in New Issue