Piotr Caban : jscript: Add error handling to Array.reverse.
Module: wine Branch: master Commit: 81715d00cd8a0a54fd9b836eff4049e8574419b6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=81715d00cd8a0a54fd9b836eff... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Jan 20 17:23:55 2010 +0100 jscript: Add error handling to Array.reverse. --- dlls/jscript/array.c | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) diff --git a/dlls/jscript/array.c b/dlls/jscript/array.c index b6fcd3c..fd1fe51 100644 --- a/dlls/jscript/array.c +++ b/dlls/jscript/array.c @@ -473,17 +473,35 @@ static HRESULT Array_reverse(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, DISP l = length-k-1; hres1 = jsdisp_propget_idx(jsthis, k, &v1, ei, sp); + if(FAILED(hres1)) + return hres1; + hres2 = jsdisp_propget_idx(jsthis, l, &v2, ei, sp); + if(FAILED(hres2)) { + VariantClear(&v1); + return hres2; + } if(hres1 == DISP_E_UNKNOWNNAME) - jsdisp_delete_idx(jsthis, l); + hres1 = jsdisp_delete_idx(jsthis, l); else - jsdisp_propput_idx(jsthis, l, &v1, ei, sp); + hres1 = jsdisp_propput_idx(jsthis, l, &v1, ei, sp); + + if(FAILED(hres1)) { + VariantClear(&v1); + VariantClear(&v2); + return hres1; + } if(hres2 == DISP_E_UNKNOWNNAME) - jsdisp_delete_idx(jsthis, k); + hres2 = jsdisp_delete_idx(jsthis, k); else - jsdisp_propput_idx(jsthis, k, &v2, ei, sp); + hres2 = jsdisp_propput_idx(jsthis, k, &v2, ei, sp); + + if(FAILED(hres2)) { + VariantClear(&v2); + return hres2; + } } if(retv) {
participants (1)
-
Alexandre Julliard