From 30d877a9df4c52a1842dfefe09ebf9f1282c3071 Mon Sep 17 00:00:00 2001 From: Adeline CARNIS Date: Tue, 21 Apr 2020 16:24:37 +0200 Subject: [PATCH] * Bug #16408 fixed - toJSON(var, filename, indent) crashed Scilab. Change-Id: I3b71dbdd5879c1cacc9f02221f42f1c6a3fe6daa --- scilab/CHANGES.md | 1 + scilab/modules/webtools/help/en_US/toJSON.xml | 3 ++- .../webtools/sci_gateway/cpp/sci_toJSON.cpp | 4 ++-- .../webtools/tests/nonreg_tests/bug_16408.tst | 24 ++++++++++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 scilab/modules/webtools/tests/nonreg_tests/bug_16408.tst diff --git a/scilab/CHANGES.md b/scilab/CHANGES.md index cea824a..40b1044 100644 --- a/scilab/CHANGES.md +++ b/scilab/CHANGES.md @@ -276,6 +276,7 @@ Bug Fixes * [#16399](https://bugzilla.scilab.org/16399): `mtlb_zeros([])` was crashing Scilab. * [#16401](https://bugzilla.scilab.org/16401): global `external_object_java` class was crashing Scilab. * [#16403](https://bugzilla.scilab.org/16403): 1D extraction of matrix with implicit index had wrong dimensions. +* [#16408](https://bugzilla.scilab.org/16408): toJSON(var, indent, filename) is the right call sequence. Documentation has been udpated. ### Bugs fixed in 6.1.0: diff --git a/scilab/modules/webtools/help/en_US/toJSON.xml b/scilab/modules/webtools/help/en_US/toJSON.xml index 1e85cfd..e483429 100644 --- a/scilab/modules/webtools/help/en_US/toJSON.xml +++ b/scilab/modules/webtools/help/en_US/toJSON.xml @@ -26,8 +26,9 @@ Syntax result = toJSON(var) + result = toJSON(var, indent) result = toJSON(var, filename) - result = toJSON(var, filename, indent) + result = toJSON(var, indent, filename) diff --git a/scilab/modules/webtools/sci_gateway/cpp/sci_toJSON.cpp b/scilab/modules/webtools/sci_gateway/cpp/sci_toJSON.cpp index 8a8a287..e1a3f82 100644 --- a/scilab/modules/webtools/sci_gateway/cpp/sci_toJSON.cpp +++ b/scilab/modules/webtools/sci_gateway/cpp/sci_toJSON.cpp @@ -96,7 +96,7 @@ int sci_toJSON(scilabEnv env, int nin, scilabVar *in, int nopt, scilabOpt opt, i case 3: { //must be a scalar double or single string - if (!scilab_isDouble(env, in[1]) && !scilab_isScalar(env, in[1])) + if (!scilab_isDouble(env, in[1]) || !scilab_isScalar(env, in[1])) { Scierror(999, "%s: Wrong type for input argument #%d: double expected.\n", name.data(), 2); return STATUS_ERROR; @@ -107,7 +107,7 @@ int sci_toJSON(scilabEnv env, int nin, scilabVar *in, int nopt, scilabOpt opt, i indent = (int)dbl; //must be a scalar double or single string - if (!scilab_isString(env, in[2]) && !isScalar(env, in[2])) + if (!scilab_isString(env, in[2]) || !isScalar(env, in[2])) { Scierror(999, "%s: Wrong type for input argument #%d: string expected.\n", name.data(), 3); return STATUS_ERROR; diff --git a/scilab/modules/webtools/tests/nonreg_tests/bug_16408.tst b/scilab/modules/webtools/tests/nonreg_tests/bug_16408.tst new file mode 100644 index 0000000..fdd53cc --- /dev/null +++ b/scilab/modules/webtools/tests/nonreg_tests/bug_16408.tst @@ -0,0 +1,24 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2020 - ESI Group - Adeline CARNIS +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +// <-- CLI SHELL MODE --> +// <-- NO CHECK REF --> + +// <-- Non-regression test for bug 16408 --> +// +// <-- Bugzilla URL --> +// http://bugzilla.scilab.org/show_bug.cgi?id=16408 +// +// <-- Short Description --> +// toJSON(var, filename, indent) is wrong and crashed. +// toJSON(var, indent, filename) is the right call sequence. Documentation +// has been udpated. +// ============================================================================= + +assert_checkfalse(execstr("toJSON([""a"" ""b""], tempname(), 1)" ,"errcatch") == 0); +refMsg = msprintf(_("%s: Wrong type for input argument #%d: double expected.\n"), "toJSON", 2); +assert_checkerror("toJSON([""a"" ""b""], tempname(), 1)", refMsg); -- 1.7.9.5