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>
This commit is contained in:
Jacek Caban 2018-05-10 19:20:06 +02:00 committed by Alexandre Julliard
parent 551e5a77e2
commit f82bc09f28
3 changed files with 9 additions and 22 deletions

View File

@ -1589,19 +1589,6 @@ HRESULT disp_delete_name(script_ctx_t *ctx, IDispatch *disp, jsstr_t *name, BOOL
return hres; 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) HRESULT jsdisp_is_enumerable(jsdisp_t *obj, const WCHAR *name, BOOL *ret)
{ {
dispex_prop_t *prop; dispex_prop_t *prop;

View File

@ -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 disp_delete_name(script_ctx_t*,IDispatch*,jsstr_t*,BOOL*) DECLSPEC_HIDDEN;
HRESULT jsdisp_delete_idx(jsdisp_t*,DWORD) 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_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 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, HRESULT create_builtin_function(script_ctx_t*,builtin_invoke_t,const WCHAR*,const builtin_info_t*,DWORD,

View File

@ -138,20 +138,21 @@ static HRESULT Object_hasOwnProperty(script_ctx_t *ctx, vdisp_t *jsthis, WORD fl
return hres; return hres;
if(is_jsdisp(jsthis)) { if(is_jsdisp(jsthis)) {
property_desc_t prop_desc;
const WCHAR *name_str; const WCHAR *name_str;
BOOL result;
name_str = jsstr_flatten(name); name_str = jsstr_flatten(name);
if(name_str) if(!name_str) {
hres = jsdisp_is_own_prop(jsthis->u.jsdisp, name_str, &result); jsstr_release(name);
else return E_OUTOFMEMORY;
hres = E_OUTOFMEMORY; }
hres = jsdisp_get_own_property(jsthis->u.jsdisp, name_str, TRUE, &prop_desc);
jsstr_release(name); jsstr_release(name);
if(FAILED(hres)) if(FAILED(hres) && hres != DISP_E_UNKNOWNNAME)
return hres; return hres;
if(r) if(r) *r = jsval_bool(hres == S_OK);
*r = jsval_bool(result);
return S_OK; return S_OK;
} }