* Bug 14501 fixed: strsubst crashed on consecutive occurrences. 60/21260/3
Antoine ELIAS [Tue, 28 Jan 2020 09:57:40 +0000 (10:57 +0100)]
  http://bugzilla.scilab.org/14501

Change-Id: I1a046721238b0f1c5684522c673c724c6f51ed83

scilab/CHANGES.md
scilab/modules/string/src/c/strsubst.c
scilab/modules/string/tests/nonreg_tests/bug_14501.tst [new file with mode: 0644]

index 1662f05..f19a88f 100644 (file)
@@ -200,6 +200,7 @@ Bug Fixes
 * [#12534](http://bugzilla.scilab.org/show_bug.cgi?id=12534): Variable browser did not display the size of the variables.
 * [#13766](http://bugzilla.scilab.org/show_bug.cgi?id=13766): Minimal values for `.figure_size` were not documented.
 * [#14498](http://bugzilla.scilab.org/show_bug.cgi?id=14498): `size([],3)` returned 1 instead of 0.
+* [#14501](http://bugzilla.scilab.org/show_bug.cgi?id=14501): `strsubst` crashed on consecutive occurrences.
 * [#14557](http://bugzilla.scilab.org/show_bug.cgi?id=14557): `csim` failed when the system has no state.
 * [#14498](http://bugzilla.scilab.org/show_bug.cgi?id=14498): `size([],3)` returned 1 instead of 0.
 * [#14604](http://bugzilla.scilab.org/show_bug.cgi?id=14604): `emptystr()` is 40x slower with 6.0.0 wrt 5.5.2
index 84a08b8..cb5d002 100644 (file)
@@ -457,7 +457,7 @@ wchar_t *wcssub(const wchar_t* _pwstInput, const wchar_t* _pwstSearch, const wch
         {
             piStart[iOccurs++]  = pwstPos - _pwstInput;
             iOffset             += iReplace - iSearch;
-            pwstPos++;
+            pwstPos             += iSearch;
         }
     }
 
diff --git a/scilab/modules/string/tests/nonreg_tests/bug_14501.tst b/scilab/modules/string/tests/nonreg_tests/bug_14501.tst
new file mode 100644 (file)
index 0000000..3764437
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2020 - ESI Group - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+
+// <-- Non-regression test for bug 14501 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14501
+//
+// <-- Short Description -->
+// strsubst crashed on consecutive occurrences.
+// -------------------------------------------------------------
+assert_checkequal(strsubst("faaaf","aa","a"), "faaf");
+assert_checkequal(strsubst("faaaaaaaaf","aa","a"), "faaaaf");
+