From f82bc09f28d66b4d9250fd8d918c08176d194f23 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 10 May 2018 19:20:06 +0200 Subject: [PATCH] jscript: Use jsdisp_get_own_property in Object.hasOwnProperty implementation. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- 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 5ba5b70ed0f..5ec6830cbd8 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 ab7d63479a7..9f2220fb911 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 72365c71ffa..56b6e8e606a 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; }