Jacek Caban : jscript: Use BSTR also for pure IDispatch call in disp_get_id .
Alexandre Julliard
julliard at winehq.org
Mon Mar 11 16:24:52 CDT 2013
Module: wine
Branch: master
Commit: 67d86e630e83098ea2e4e250b8048bfd93a00e45
URL: http://source.winehq.org/git/wine.git/?a=commit;h=67d86e630e83098ea2e4e250b8048bfd93a00e45
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Mar 11 16:03:15 2013 +0100
jscript: Use BSTR also for pure IDispatch call in disp_get_id.
---
dlls/jscript/engine.c | 28 ++++++++++++++++------------
1 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c
index 52cdc88..f05fedf 100644
--- a/dlls/jscript/engine.c
+++ b/dlls/jscript/engine.c
@@ -350,6 +350,7 @@ static HRESULT disp_get_id(script_ctx_t *ctx, IDispatch *disp, WCHAR *name, BSTR
{
IDispatchEx *dispex;
jsdisp_t *jsdisp;
+ BSTR bstr;
HRESULT hres;
jsdisp = iface_to_jsdisp((IUnknown*)disp);
@@ -359,24 +360,27 @@ static HRESULT disp_get_id(script_ctx_t *ctx, IDispatch *disp, WCHAR *name, BSTR
return hres;
}
+ if(name_bstr) {
+ bstr = name_bstr;
+ }else {
+ bstr = SysAllocString(name);
+ if(!bstr)
+ return E_OUTOFMEMORY;
+ }
+
*id = 0;
hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
if(SUCCEEDED(hres)) {
- BSTR str = name_bstr;
-
- if(!str)
- str = SysAllocString(name);
- if(str)
- hres = IDispatchEx_GetDispID(dispex, str, make_grfdex(ctx, flags|fdexNameCaseSensitive), id);
- else
- hres = E_OUTOFMEMORY;
+ hres = IDispatchEx_GetDispID(dispex, bstr, make_grfdex(ctx, flags|fdexNameCaseSensitive), id);
IDispatchEx_Release(dispex);
- return hres;
+ }else {
+ TRACE("using IDispatch\n");
+ hres = IDispatch_GetIDsOfNames(disp, &IID_NULL, &name, 1, 0, id);
}
- TRACE("using IDispatch\n");
-
- return IDispatch_GetIDsOfNames(disp, &IID_NULL, &name, 1, 0, id);
+ if(name_bstr != bstr)
+ SysFreeString(bstr);
+ return hres;
}
static inline BOOL var_is_null(const VARIANT *v)
More information about the wine-cvs
mailing list