[PATCH] jscript: Avoid crash when calling stringify() with no arguments.

Zebediah Figura z.figura12 at gmail.com
Thu May 3 23:32:44 CDT 2018


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
Encountered with Neocron 2: http://www.neocron-game.com/launcher/

 dlls/jscript/json.c       | 5 +++++
 dlls/jscript/tests/api.js | 4 ++++
 2 files changed, 9 insertions(+)

diff --git a/dlls/jscript/json.c b/dlls/jscript/json.c
index fc23b54..4f341ee 100644
--- a/dlls/jscript/json.c
+++ b/dlls/jscript/json.c
@@ -768,6 +768,11 @@ static HRESULT JSON_stringify(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, un
 
     TRACE("\n");
 
+    if(!argc) {
+        *r = jsval_undefined();
+        return S_OK;
+    }
+
     if(argc >= 2 && is_object_instance(argv[1])) {
         FIXME("Replacer %s not yet supported\n", debugstr_jsval(argv[1]));
         return E_NOTIMPL;
diff --git a/dlls/jscript/tests/api.js b/dlls/jscript/tests/api.js
index 4207f5a..f124c46 100644
--- a/dlls/jscript/tests/api.js
+++ b/dlls/jscript/tests/api.js
@@ -1810,6 +1810,7 @@ ok(isNaN(tmp), "Math.tan(-Infinity) is not NaN");
         return;
 
     var stringify_tests = [
+        [[], undefined],
         [[true], "true"],
         [[false], "false"],
         [[null], "null"],
@@ -1836,6 +1837,9 @@ ok(isNaN(tmp), "Math.tan(-Infinity) is not NaN");
            "["+i+"] stringify(" + stringify_tests[i][0] + ") returned " + s + " expected " + stringify_tests[i][1]);
     }
 
+    s = JSON.stringify();
+    ok(s === undefined, "stringify() returned " + s + " expected undefined");
+
     s = JSON.stringify(testObj);
     ok(s === undefined || s === "undefined" /* broken on some old versions */,
        "stringify(testObj) returned " + s + " expected undfined");
-- 
2.7.4




More information about the wine-devel mailing list