Jacek Caban : vbscript: Don't allow OP_dim on already initialized arrays.

Alexandre Julliard julliard at winehq.org
Mon Nov 25 13:33:14 CST 2013


Module: wine
Branch: master
Commit: 1c1a261122e9a2de546bc818d9739e38acec8e21
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1c1a261122e9a2de546bc818d9739e38acec8e21

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Nov 22 16:48:33 2013 +0100

vbscript: Don't allow OP_dim on already initialized arrays.

---

 dlls/vbscript/interp.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c
index 4a137cd..6365461 100644
--- a/dlls/vbscript/interp.c
+++ b/dlls/vbscript/interp.c
@@ -984,6 +984,7 @@ static HRESULT interp_dim(exec_ctx_t *ctx)
 {
     const BSTR ident = ctx->instr->arg1.bstr;
     const unsigned array_id = ctx->instr->arg2.uint;
+    const array_desc_t *array_desc;
     ref_t ref;
     HRESULT hres;
 
@@ -1007,15 +1008,16 @@ static HRESULT interp_dim(exec_ctx_t *ctx)
         return E_FAIL;
     }
 
-    if(!ctx->arrays[array_id]) {
-        const array_desc_t *array_desc;
+    if(ctx->arrays[array_id]) {
+        FIXME("Array already initialized\n");
+        return E_FAIL;
+    }
 
-        array_desc = ctx->func->array_descs + array_id;
-        if(array_desc->dim_cnt) {
-            ctx->arrays[array_id] = SafeArrayCreate(VT_VARIANT, array_desc->dim_cnt, array_desc->bounds);
-            if(!ctx->arrays[array_id])
-                return E_OUTOFMEMORY;
-        }
+    array_desc = ctx->func->array_descs + array_id;
+    if(array_desc->dim_cnt) {
+        ctx->arrays[array_id] = SafeArrayCreate(VT_VARIANT, array_desc->dim_cnt, array_desc->bounds);
+        if(!ctx->arrays[array_id])
+            return E_OUTOFMEMORY;
     }
 
     V_VT(ref.u.v) = VT_ARRAY|VT_BYREF|VT_VARIANT;




More information about the wine-cvs mailing list