[bug_14020] mscanf fixed about empty data. 58/16958/2
Cedric Delamarre [Mon, 3 Aug 2015 08:45:08 +0000 (10:45 +0200)]
 input call mscanf and they have to return an empty string
 when nothing is entered instead of an empty matrix.

Change-Id: I13cc2bea99fff08927f1eeef8a24b0fb56ac26ac

scilab/modules/fileio/sci_gateway/cpp/sci_mscanf.cpp
scilab/modules/fileio/tests/nonreg_tests/bug_14020.tst [new file with mode: 0644]
scilab/modules/io/help/en_US/input.xml

index 356cb28..cebaed7 100644 (file)
@@ -176,7 +176,7 @@ types::Function::ReturnValue sci_mscanf(types::typed_list &in, int _iRetCount, t
     {
         if (sizeOfVector == 0)
         {
-            out.push_back(types::Double::Empty());
+            out.push_back(new types::String(L""));
             return types::Function::OK;
         }
 
@@ -271,7 +271,7 @@ types::Function::ReturnValue sci_mscanf(types::typed_list &in, int _iRetCount, t
 
                 int dimsArrayOfCell[2] = {1, (int)pITTemp->size()};
                 types::Cell* pCell = new types::Cell(2, dimsArrayOfCell);
-                for (int i = 0; i < pITTemp->size(); i++)
+                for (int i = 0; i < dimsArrayOfCell[1]; i++)
                 {
                     pCell->set(i, (*pITTemp)[i]);
                 }
diff --git a/scilab/modules/fileio/tests/nonreg_tests/bug_14020.tst b/scilab/modules/fileio/tests/nonreg_tests/bug_14020.tst
new file mode 100644 (file)
index 0000000..08a5dde
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Cedric Delamarre
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- INTERACTIVE TEST -->
+//
+// <-- Non-regression test for bug 14020 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=14020
+//
+// <-- Short Description -->
+// Carriage return's have to return an empty string
+
+str=input("(Hit Enter):","string");
+
+// after hit enter, "str" must be an empty string
+assert_checkequal(str, "");
index e3beb08..b3ae17d 100644 (file)
@@ -2,11 +2,11 @@
 <!--
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) XXXX-2008 - INRIA
- * 
+ *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
  * you should have received as part of this distribution.  The terms
- * are also available at    
+ * are also available at
  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
  *
  -->
     <refsection>
         <title>Description</title>
         <para>
-            <literal>input(message)</literal> gives the user the prompt in the text string and 
-            then waits for input from the keyboard. 
+            <literal>input(message)</literal> gives the user the prompt in the text string and
+            then waits for input from the keyboard.
             The input can be expression which is evaluated by <link linkend="evstr">evstr</link>.
             If nothing but a carriage return is
-            entered at the prompt <literal>input(message)</literal> returns an empty matrix
+            entered at the prompt <literal>input(message)</literal> returns an empty matrix.
         </para>
         <para>
             Invoked with two arguments, the output is a character string which is the
             expression entered at keyboard.  If nothing but a carriage return is
-            entered at the prompt <literal>input(message)</literal> returns  a single white
-            space  <literal>" "</literal>.
+            entered at the prompt, <literal>input(message)</literal> returns an empty string.
         </para>
     </refsection>
     <refsection>
         <title>Examples</title>
-        <programlisting role="example"><![CDATA[ 
+        <programlisting role="example"><![CDATA[
 //x=input("How many iterations?")
 //x=input("What is your name?","string")
  ]]></programlisting>
             <member>
                 <link linkend="x_mdialog">x_mdialog</link>
             </member>
+            <member>
+                <link linkend="isempty">isempty</link>
+            </member>
         </simplelist>
     </refsection>
+    <refsection>
+        <title>History</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.0.0</revnumber>
+                <revremark>
+                    <para>
+                        In case where nothing is entered with the string input argument,
+                        input returns an empty string instead of a space.
+                    </para>
+                </revremark>
+            </revision>
+        </revhistory>
+    </refsection>
 </refentry>