Commit 67d86e63 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

jscript: Use BSTR also for pure IDispatch call in disp_get_id.

parent 587d007d
...@@ -350,6 +350,7 @@ static HRESULT disp_get_id(script_ctx_t *ctx, IDispatch *disp, WCHAR *name, BSTR ...@@ -350,6 +350,7 @@ static HRESULT disp_get_id(script_ctx_t *ctx, IDispatch *disp, WCHAR *name, BSTR
{ {
IDispatchEx *dispex; IDispatchEx *dispex;
jsdisp_t *jsdisp; jsdisp_t *jsdisp;
BSTR bstr;
HRESULT hres; HRESULT hres;
jsdisp = iface_to_jsdisp((IUnknown*)disp); jsdisp = iface_to_jsdisp((IUnknown*)disp);
...@@ -359,24 +360,27 @@ static HRESULT disp_get_id(script_ctx_t *ctx, IDispatch *disp, WCHAR *name, BSTR ...@@ -359,24 +360,27 @@ static HRESULT disp_get_id(script_ctx_t *ctx, IDispatch *disp, WCHAR *name, BSTR
return hres; return hres;
} }
if(name_bstr) {
bstr = name_bstr;
}else {
bstr = SysAllocString(name);
if(!bstr)
return E_OUTOFMEMORY;
}
*id = 0; *id = 0;
hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex); hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
if(SUCCEEDED(hres)) { if(SUCCEEDED(hres)) {
BSTR str = name_bstr; hres = IDispatchEx_GetDispID(dispex, bstr, make_grfdex(ctx, flags|fdexNameCaseSensitive), id);
if(!str)
str = SysAllocString(name);
if(str)
hres = IDispatchEx_GetDispID(dispex, str, make_grfdex(ctx, flags|fdexNameCaseSensitive), id);
else
hres = E_OUTOFMEMORY;
IDispatchEx_Release(dispex); IDispatchEx_Release(dispex);
return hres; }else {
TRACE("using IDispatch\n");
hres = IDispatch_GetIDsOfNames(disp, &IID_NULL, &name, 1, 0, id);
} }
TRACE("using IDispatch\n"); if(name_bstr != bstr)
SysFreeString(bstr);
return IDispatch_GetIDsOfNames(disp, &IID_NULL, &name, 1, 0, id); return hres;
} }
static inline BOOL var_is_null(const VARIANT *v) static inline BOOL var_is_null(const VARIANT *v)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment