* Bug 15796 fixed: now msprintf("") does not crash Scilab any more 42/20542/5
St├ęphane Mottelet [Mon, 8 Oct 2018 14:25:52 +0000 (16:25 +0200)]
http://bugzilla.scilab.org/show_bug.cgi?id=15796

Change-Id: I8e82380a977e982ebcfa07d1fb302eea0872f230

scilab/CHANGES.md
scilab/modules/output_stream/src/cpp/scilab_sprintf.cpp
scilab/modules/output_stream/tests/nonreg_tests/bug_15796.tst [new file with mode: 0644]

index 80e235c..b2563e4 100644 (file)
@@ -622,6 +622,7 @@ Known issues
 * [#15774](http://bugzilla.scilab.org/show_bug.cgi?id=15774): `clean()` failed on sparse complex matrix.
 * [#15778](http://bugzilla.scilab.org/show_bug.cgi?id=15778): Deleting some rows or columns of a boolean sparse array with `= []` crashed Scilab
 * [#15779](http://bugzilla.scilab.org/show_bug.cgi?id=15779): `test_run` did not accept the wildcard * in tests names.
+* [#15796](http://bugzilla.scilab.org/show_bug.cgi?id=15796): Display after `mprintf("")` crashed Scilab (regression)
 * [#15809](http://bugzilla.scilab.org/show_bug.cgi?id=15809): HDF5 load/save was super slow for nested lists.
 * [#15814](http://bugzilla.scilab.org/show_bug.cgi?id=15814): Selecting graphic children with booleans yielded an error.
 * [#15818](http://bugzilla.scilab.org/show_bug.cgi?id=15818): `polarplot()` example could not be subplotted. `polarplot`'s demo did not display 'View code' and too often prompted the user.
index be88f29..1a54564 100644 (file)
@@ -698,11 +698,16 @@ wchar_t** scilab_sprintf(const std::string& funcname, const wchar_t* _pwstInput,
     }
 
     // write last line
-    if(oFirstOutput.str().length())
+    if (oFirstOutput.str().length())
     {
         pwstOutput[outputIter++] = os_wcsdup((wchar_t*)oFirstOutput.str().c_str());
     }
-
+    // fill in the remaining allocated space with default value
+    while (outputIter < *_piOutputRows)
+    {
+        pwstOutput[outputIter++] = os_wcsdup(L"");
+    }
+    
     for (auto & tok : token)
     {
         delete[] tok->pwstToken;
diff --git a/scilab/modules/output_stream/tests/nonreg_tests/bug_15796.tst b/scilab/modules/output_stream/tests/nonreg_tests/bug_15796.tst
new file mode 100644 (file)
index 0000000..5b3db76
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 -St├ęphane MOTTELET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 15796 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/15796
+//
+// <-- Short Description -->
+// Display after mprintf("") msprintf("") crashes Scilab (was OK in 6.0.1)
+
+mprintf("")
+msprintf("")
+printf("")
+sprintf("")