Spreadsheet: fix an xls_open crash 34/18234/2
Paul Bignier [Fri, 10 Jun 2016 08:03:48 +0000 (10:03 +0200)]
 * Crashed with zero input arguments

Change-Id: I92d7f0b28eff2fbafd80a2e1405c12f2e389024e

scilab/modules/spreadsheet/sci_gateway/cpp/sci_xls_open.cpp
scilab/modules/spreadsheet/tests/unit_tests/xls_open.dia.ref
scilab/modules/spreadsheet/tests/unit_tests/xls_open.tst

index fbbcbab..1c02177 100644 (file)
@@ -72,7 +72,7 @@ types::Function::ReturnValue sci_xls_open(types::typed_list &in, int _iRetCount,
     sep[1] = L'\0';
 
     // *** check the minimal number of input args. ***
-    if (in.size() > 1)
+    if (in.size() != 1)
     {
         Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "xls_open", 1);
         return types::Function::Error;
index 1178e9c..908a444 100644 (file)
@@ -1,4 +1,5 @@
 //<-- CLI SHELL MODE -->
+//<-- ENGLISH IMPOSED -->
 // =============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2009 - DIGITEO
@@ -27,3 +28,6 @@ for i = 1 : size(tab_ref, "*")
 end
 cd TMPDIR;
 removedir open_xls_tests;
+instr = "[fd, SST, Sheetnames, Sheetpos] = xls_open();";
+refMsg = msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "xls_open", 1);
+assert_checkerror(instr, refMsg);
index 1e15f24..26d87b1 100644 (file)
@@ -1,4 +1,5 @@
 //<-- CLI SHELL MODE -->
+//<-- ENGLISH IMPOSED -->
 // =============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 // Copyright (C) 2009 - DIGITEO
@@ -20,7 +21,7 @@ cd TMPDIR;
 mkdir open_xls_tests;
 cd open_xls_tests;
 origfile = SCI + "/modules/spreadsheet/tests/unit_tests/readxls.xls";
-       
+
 for i = 1 : size(tab_ref, "*")
        newfile = tab_ref(i) + ".xls";
        copyfile(origfile, newfile);
@@ -31,3 +32,7 @@ end
 
 cd TMPDIR;
 removedir open_xls_tests;
+
+instr = "[fd, SST, Sheetnames, Sheetpos] = xls_open();";
+refMsg = msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "xls_open", 1);
+assert_checkerror(instr, refMsg);