Piotr Caban : jscript: Add error handling to Array.reverse.
Alexandre Julliard
julliard at winehq.org
Wed Jan 20 14:29:45 CST 2010
Module: wine
Branch: master
Commit: 81715d00cd8a0a54fd9b836eff4049e8574419b6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=81715d00cd8a0a54fd9b836eff4049e8574419b6
Author: Piotr Caban <piotr at 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) {
More information about the wine-cvs
mailing list