Jacek Caban : jscript: Properly support missing array elements in stringify_array.

Alexandre Julliard julliard at winehq.org
Fri Mar 2 12:16:45 CST 2018


Module: wine
Branch: master
Commit: 5f9f9a45e9afe84dbcf69b9cb813dc983a70a7cc
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=5f9f9a45e9afe84dbcf69b9cb813dc983a70a7cc

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Mar  1 23:58:17 2018 +0100

jscript: Properly support missing array elements in stringify_array.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/jscript/json.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/dlls/jscript/json.c b/dlls/jscript/json.c
index 7d69cf5..fc23b54 100644
--- a/dlls/jscript/json.c
+++ b/dlls/jscript/json.c
@@ -545,15 +545,18 @@ static HRESULT stringify_array(stringify_ctx_t *ctx, jsdisp_t *obj)
         }
 
         hres = jsdisp_get_idx(obj, i, &val);
-        if(FAILED(hres))
-            return hres;
-
-        hres = stringify(ctx, val);
-        if(FAILED(hres))
+        if(SUCCEEDED(hres)) {
+            hres = stringify(ctx, val);
+            if(FAILED(hres))
+                return hres;
+            if(hres == S_FALSE && !append_string(ctx, nullW))
+                return E_OUTOFMEMORY;
+        }else if(hres == DISP_E_UNKNOWNNAME) {
+            if(!append_string(ctx, nullW))
+                return E_OUTOFMEMORY;
+        }else {
             return hres;
-
-        if(hres == S_FALSE && !append_string(ctx, nullW))
-            return E_OUTOFMEMORY;
+        }
     }
 
     if((length && *ctx->gap && !append_char(ctx, '\n')) || !append_char(ctx, ']'))




More information about the wine-cvs mailing list