From: Jacek Caban Subject: [PATCH 2/6] jscript: Fixed deleting nonexisting properties from member expression Message-Id: <50CF11B8.9050503@codeweavers.com> Date: Mon, 17 Dec 2012 13:36:08 +0100 --- dlls/jscript/dispex.c | 8 +++++--- dlls/jscript/tests/lang.js | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c index 2cd4ad5..dbb1c63 100644 --- a/dlls/jscript/dispex.c +++ b/dlls/jscript/dispex.c @@ -1516,10 +1516,12 @@ HRESULT disp_delete_name(script_ctx_t *ctx, IDispatch *disp, jsstr_t *name, BOOL dispex_prop_t *prop; hres = find_prop_name(jsdisp, string_hash(name->str), name->str, &prop); - if(prop) + if(prop) { hres = delete_prop(prop, ret); - else - hres = DISP_E_MEMBERNOTFOUND; + }else { + *ret = TRUE; + hres = S_OK; + } jsdisp_release(jsdisp); return hres; diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js index 23e12cc..f9c05bd 100644 --- a/dlls/jscript/tests/lang.js +++ b/dlls/jscript/tests/lang.js @@ -1121,6 +1121,8 @@ ok(typeof(tmp.test) === "undefined", "tmp.test type = " + typeof(tmp.test)); ok(!("test" in tmp), "test is still in tmp after delete?"); for(iter in tmp) ok(false, "tmp has prop " + iter); +ok((delete tmp.test) === true, "deleting test didn't return true"); +ok((delete tmp.nonexistent) === true, "deleting nonexistent didn't return true"); tmp = new Object(); tmp.test = false;