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