Module: wine Branch: master Commit: 4dbd777de289ee58a11b2c9919e9b2765b81941a URL: http://source.winehq.org/git/wine.git/?a=commit;h=4dbd777de289ee58a11b2c9919...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Dec 17 13:36:18 2012 +0100
jscript: Fixed deleting nonexistent identifiers.
---
dlls/jscript/engine.c | 16 +++++++++++----- dlls/jscript/tests/lang.js | 1 + 2 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index fbfa460..489aef6 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -1631,16 +1631,22 @@ static HRESULT interp_delete_ident(exec_ctx_t *ctx) if(FAILED(hres)) return hres;
- if(exprval.type != EXPRVAL_IDREF) { + switch(exprval.type) { + case EXPRVAL_IDREF: + hres = disp_delete(exprval.u.idref.disp, exprval.u.idref.id, &ret); + IDispatch_Release(exprval.u.idref.disp); + if(FAILED(hres)) + return ret; + break; + case EXPRVAL_INVALID: + ret = TRUE; + break; + default: FIXME("Unsupported exprval\n"); exprval_release(&exprval); return E_NOTIMPL; }
- hres = disp_delete(exprval.u.idref.disp, exprval.u.idref.id, &ret); - IDispatch_Release(exprval.u.idref.disp); - if(FAILED(hres)) - return ret;
return stack_push(ctx, jsval_bool(ret)); } diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js index f9c05bd..bac2deb 100644 --- a/dlls/jscript/tests/lang.js +++ b/dlls/jscript/tests/lang.js @@ -1123,6 +1123,7 @@ 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"); +ok((delete nonexistent) === true, "deleting nonexistent didn't return true");
tmp = new Object(); tmp.test = false;