* Bug #8234 fixed - strtod did not return an empty matrix when input argument was... 67/11567/3
Charlotte HECQUET [Thu, 23 May 2013 08:33:57 +0000 (10:33 +0200)]
Change-Id: Ied892d878086eaea36a35a8c4be1edf6a53ddef6

scilab/CHANGES_5.5.X
scilab/modules/string/help/en_US/strtod.xml
scilab/modules/string/sci_gateway/c/sci_strtod.c
scilab/modules/string/tests/nonreg_tests/bug_8234.dia.ref [new file with mode: 0644]
scilab/modules/string/tests/nonreg_tests/bug_8234.tst [new file with mode: 0644]
scilab/modules/string/tests/unit_tests/strtod.dia.ref
scilab/modules/string/tests/unit_tests/strtod.tst

index bf56f3c..d0079f2 100644 (file)
@@ -141,6 +141,8 @@ Bug fixes
 
 * Bug #8162 fixed - Area of stability of plzr was wrong for continuous systems (+unit test added).
 
+* Bug #8234 fixed - strtod did not return an empty matrix when input argument was an empty matrix.
+
 * Bug #8264 fixed - Documentation for Matlab's atan2() equivalent fixed.
 
 * Bug #8319 fixed - dbphi(hypermat) and phasemag(hypermat) returned a matrix instead of a hypermatrix.
index 7bdeaf4..a6adedb 100644 (file)
         </para>
     </refsection>
     <refsection>
-        <title>Remark</title>
-        <para>
-            This function is based on the strtod C function which causes different behaviors on Windows and Linux. In fact, on Windows, it is possible to use
-            d or D for exponents, but it is not possible to use hexadecimal numbers.
-        </para>
+        <title>Remarks</title>
+        <itemizedlist>
+            <listitem>
+                <para>
+                    This function is based on the strtod C function which causes different behaviors on Windows and Linux. In fact, on Windows, it is possible to use
+                    d or D for exponents, but it is not possible to use hexadecimal numbers.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Note that <literal>strtod("%inf")</literal> returns <literal>Nan</literal>.
+                </para>
+            </listitem>
+        </itemizedlist>
     </refsection> 
     <refsection>
         <title>Examples</title>
index 5534d91..41324f3 100644 (file)
@@ -92,7 +92,7 @@ int sci_strtod(char *fname, unsigned long fname_len)
 
     if (isEmptyMatrix(pvApiCtx, piAddr))
     {
-        if (createScalarDouble(pvApiCtx, iRhs + 1, not_a_number) != 0)
+        if (createEmptyMatrix(pvApiCtx, iRhs + 1) != 0)
         {
             return 0;
         }
diff --git a/scilab/modules/string/tests/nonreg_tests/bug_8234.dia.ref b/scilab/modules/string/tests/nonreg_tests/bug_8234.dia.ref
new file mode 100644 (file)
index 0000000..8db859a
--- /dev/null
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8234 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8234
+//
+// <-- Short Description -->
+// strtod should return an empty matrix when input argument is an empty matrix
+[d, str] = strtod([]);
+assert_checkequal(d, []);
+assert_checkequal(str, "");
diff --git a/scilab/modules/string/tests/nonreg_tests/bug_8234.tst b/scilab/modules/string/tests/nonreg_tests/bug_8234.tst
new file mode 100644 (file)
index 0000000..8f12da7
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Charlotte HECQUET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 8234 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8234
+//
+// <-- Short Description -->
+// strtod should return an empty matrix when input argument is an empty matrix
+
+[d, str] = strtod([]);
+assert_checkequal(d, []);
+assert_checkequal(str, "");
index 89db7ae..aa482af 100644 (file)
@@ -59,7 +59,7 @@ assert_checkequal(d, %nan);
 //===============================
 [d,s] = strtod([]);
 assert_checkequal(s, "");
-assert_checkequal(d, %nan);
+assert_checkequal(d, []);
 //===============================
 [d,s] = strtod("-3 sdf");
 assert_checkequal(s, " sdf");
@@ -140,7 +140,7 @@ assert_checkequal(d, %nan);
 //===============================
 [d,s] = strtod([],".");
 assert_checkequal(s, "");
-assert_checkequal(d, %nan);
+assert_checkequal(d, []);
 //===============================
 [d,s] = strtod("-3 sdf",".");
 assert_checkequal(s, " sdf");
@@ -220,7 +220,7 @@ assert_checkequal(d, %nan);
 //===============================
 [d,s] = strtod([],",");
 assert_checkequal(s, "");
-assert_checkequal(d, %nan);
+assert_checkequal(d, []);
 //===============================
 [d,s] = strtod("-3 sdf",",");
 assert_checkequal(s, " sdf");
index ba3be18..7d0d82b 100644 (file)
@@ -61,7 +61,7 @@ assert_checkequal(d, %nan);
 //===============================
 [d,s] = strtod([]);
 assert_checkequal(s, "");
-assert_checkequal(d, %nan);
+assert_checkequal(d, []);
 //===============================
 [d,s] = strtod("-3 sdf");
 assert_checkequal(s, " sdf");
@@ -144,7 +144,7 @@ assert_checkequal(d, %nan);
 //===============================
 [d,s] = strtod([],".");
 assert_checkequal(s, "");
-assert_checkequal(d, %nan);
+assert_checkequal(d, []);
 //===============================
 [d,s] = strtod("-3 sdf",".");
 assert_checkequal(s, " sdf");
@@ -226,7 +226,7 @@ assert_checkequal(d, %nan);
 //===============================
 [d,s] = strtod([],",");
 assert_checkequal(s, "");
-assert_checkequal(d, %nan);
+assert_checkequal(d, []);
 //===============================
 [d,s] = strtod("-3 sdf",",");
 assert_checkequal(s, " sdf");