Jacek Caban : jscript: Use BSTR also for pure IDispatch call in Object. hasOwnProperty.
Alexandre Julliard
julliard at winehq.org
Mon Mar 11 16:24:52 CDT 2013
Module: wine
Branch: master
Commit: 52fc8b3d94853e66d7c854bc33095759008245d2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=52fc8b3d94853e66d7c854bc33095759008245d2
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Mar 11 16:05:27 2013 +0100
jscript: Use BSTR also for pure IDispatch call in Object.hasOwnProperty.
---
dlls/jscript/object.c | 26 +++++++++++++-------------
1 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/dlls/jscript/object.c b/dlls/jscript/object.c
index 8047d3f..1139f3c 100644
--- a/dlls/jscript/object.c
+++ b/dlls/jscript/object.c
@@ -113,6 +113,7 @@ static HRESULT Object_hasOwnProperty(script_ctx_t *ctx, vdisp_t *jsthis, WORD fl
{
jsstr_t *name;
DISPID id;
+ BSTR bstr;
HRESULT hres;
TRACE("\n");
@@ -131,6 +132,7 @@ static HRESULT Object_hasOwnProperty(script_ctx_t *ctx, vdisp_t *jsthis, WORD fl
BOOL result;
hres = jsdisp_is_own_prop(jsthis->u.jsdisp, name->str, &result);
+ jsstr_release(name);
if(FAILED(hres))
return hres;
@@ -139,22 +141,20 @@ static HRESULT Object_hasOwnProperty(script_ctx_t *ctx, vdisp_t *jsthis, WORD fl
return S_OK;
}
- if(is_dispex(jsthis)) {
- BSTR bstr;
- bstr = SysAllocStringLen(name->str, jsstr_length(name));
- if(!bstr)
- return E_OUTOFMEMORY;
+ bstr = SysAllocStringLen(NULL, jsstr_length(name));
+ if(bstr)
+ jsstr_flush(name, bstr);
+ jsstr_release(name);
+ if(!bstr)
+ return E_OUTOFMEMORY;
- hres = IDispatchEx_GetDispID(jsthis->u.dispex, bstr,
- make_grfdex(ctx, fdexNameCaseSensitive), &id);
- SysFreeString(bstr);
- } else {
- OLECHAR *names = name->str;
- hres = IDispatch_GetIDsOfNames(jsthis->u.disp, &IID_NULL,
- &names, 1, ctx->lcid, &id);
- }
+ if(is_dispex(jsthis))
+ hres = IDispatchEx_GetDispID(jsthis->u.dispex, bstr, make_grfdex(ctx, fdexNameCaseSensitive), &id);
+ else
+ hres = IDispatch_GetIDsOfNames(jsthis->u.disp, &IID_NULL, &bstr, 1, ctx->lcid, &id);
+ SysFreeString(bstr);
if(r)
*r = jsval_bool(SUCCEEDED(hres));
return S_OK;
More information about the wine-cvs
mailing list