Module: wine Branch: master Commit: f82bc09f28d66b4d9250fd8d918c08176d194f23 URL: https://source.winehq.org/git/wine.git/?a=commit;h=f82bc09f28d66b4d9250fd8d9...
Author: Jacek Caban jacek@codeweavers.com Date: Thu May 10 19:20:06 2018 +0200
jscript: Use jsdisp_get_own_property in Object.hasOwnProperty implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/jscript/dispex.c | 13 ------------- dlls/jscript/jscript.h | 1 - dlls/jscript/object.c | 17 +++++++++-------- 3 files changed, 9 insertions(+), 22 deletions(-)
diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c index 5ba5b70..5ec6830 100644 --- a/dlls/jscript/dispex.c +++ b/dlls/jscript/dispex.c @@ -1589,19 +1589,6 @@ HRESULT disp_delete_name(script_ctx_t *ctx, IDispatch *disp, jsstr_t *name, BOOL return hres; }
-HRESULT jsdisp_is_own_prop(jsdisp_t *obj, const WCHAR *name, BOOL *ret) -{ - dispex_prop_t *prop; - HRESULT hres; - - hres = find_prop_name(obj, string_hash(name), name, &prop); - if(FAILED(hres)) - return hres; - - *ret = prop && (prop->type == PROP_JSVAL || prop->type == PROP_BUILTIN); - return S_OK; -} - HRESULT jsdisp_is_enumerable(jsdisp_t *obj, const WCHAR *name, BOOL *ret) { dispex_prop_t *prop; diff --git a/dlls/jscript/jscript.h b/dlls/jscript/jscript.h index ab7d634..9f2220f 100644 --- a/dlls/jscript/jscript.h +++ b/dlls/jscript/jscript.h @@ -294,7 +294,6 @@ HRESULT disp_delete(IDispatch*,DISPID,BOOL*) DECLSPEC_HIDDEN; HRESULT disp_delete_name(script_ctx_t*,IDispatch*,jsstr_t*,BOOL*) DECLSPEC_HIDDEN; HRESULT jsdisp_delete_idx(jsdisp_t*,DWORD) DECLSPEC_HIDDEN; HRESULT jsdisp_get_own_property(jsdisp_t*,const WCHAR*,BOOL,property_desc_t*) DECLSPEC_HIDDEN; -HRESULT jsdisp_is_own_prop(jsdisp_t*,const WCHAR*,BOOL*) DECLSPEC_HIDDEN; HRESULT jsdisp_is_enumerable(jsdisp_t*,const WCHAR*,BOOL*) DECLSPEC_HIDDEN;
HRESULT create_builtin_function(script_ctx_t*,builtin_invoke_t,const WCHAR*,const builtin_info_t*,DWORD, diff --git a/dlls/jscript/object.c b/dlls/jscript/object.c index 72365c7..56b6e8e 100644 --- a/dlls/jscript/object.c +++ b/dlls/jscript/object.c @@ -138,20 +138,21 @@ static HRESULT Object_hasOwnProperty(script_ctx_t *ctx, vdisp_t *jsthis, WORD fl return hres;
if(is_jsdisp(jsthis)) { + property_desc_t prop_desc; const WCHAR *name_str; - BOOL result;
name_str = jsstr_flatten(name); - if(name_str) - hres = jsdisp_is_own_prop(jsthis->u.jsdisp, name_str, &result); - else - hres = E_OUTOFMEMORY; + if(!name_str) { + jsstr_release(name); + return E_OUTOFMEMORY; + } + + hres = jsdisp_get_own_property(jsthis->u.jsdisp, name_str, TRUE, &prop_desc); jsstr_release(name); - if(FAILED(hres)) + if(FAILED(hres) && hres != DISP_E_UNKNOWNNAME) return hres;
- if(r) - *r = jsval_bool(result); + if(r) *r = jsval_bool(hres == S_OK); return S_OK; }