bug 8532 fixed - size of input arguments of read_csv was not verified. 94/2694/3
Allan CORNET [Fri, 3 Dec 2010 14:12:15 +0000 (15:12 +0100)]
Change-Id: Id3841311cea5d14cea72a59155b72a60c5903b05

scilab/CHANGES_5.3.X
scilab/modules/spreadsheet/macros/read_csv.sci
scilab/modules/spreadsheet/tests/nonreg_tests/bug_8532.dia.ref [new file with mode: 0644]
scilab/modules/spreadsheet/tests/nonreg_tests/bug_8532.tst [new file with mode: 0644]

index dd9622f..00642ae 100644 (file)
@@ -51,6 +51,8 @@ Bug Fixes:
 * bug 8505 fixed - help was not generated on Windows, if there was a path name
                    with some spaces.
 
+* bug 8532 fixed - size of input arguments of read_csv was not verified.
+
 * bug 8540 fixed - Fix a typo in Xcos.
 
 * bug 8582 fixed - Under Linux & Mac OS the waitbar window was too small and we
index 12dd505..d2db711 100644 (file)
@@ -16,23 +16,31 @@ function mat = read_csv(fname, sep)
   if (type(fname) <> 10) then
     error(msprintf(gettext("%s: Wrong type for input argument #%d: a string expected.\n"), "read_csv", 1));
   end
-  
+
   if (size(fname,"*")<> 1) then
-    error(msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "read_csv", 1));  
+    error(msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "read_csv", 1));
   end
-  
-  if argn(2)<2 then 
+
+  if argn(2)<2 then
     sep = ",";
   end
-  
+
+  if (type(sep) <> 10) then
+    error(msprintf(gettext("%s: Wrong type for input argument #%d: a string expected.\n"), "read_csv", 2));
+  end
+
+  if (size(sep, "*")<> 1) then
+    error(msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "read_csv", 2));
+  end
+
   if sep == "\t" then
     sep = ascii(9);
   end
-  
+
   if ~isfile(fname) then
     error(msprintf(gettext("%s: file %s does not exist.\n"), "read_csv", fname));
   end
-  
+
   v = mgetl(fname);
   v(v == "") = [];
   ns = length(sep);
@@ -58,4 +66,3 @@ function mat = read_csv(fname, sep)
     mat = [mat; row];
   end
 endfunction
-
diff --git a/scilab/modules/spreadsheet/tests/nonreg_tests/bug_8532.dia.ref b/scilab/modules/spreadsheet/tests/nonreg_tests/bug_8532.dia.ref
new file mode 100644 (file)
index 0000000..a01bfaa
--- /dev/null
@@ -0,0 +1,26 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// 
+// <-- JVM NOT MANDATORY -->
+//
+// <-- Non-regression test for bug 8532 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8532
+//
+// <-- Short Description -->
+// size of input arguments of read_csv was no verified.
+//
+A = 1:50;
+mputl(strcat(string(A),ascii(9)+" "), TMPDIR + '/foo.csv');
+if execstr("B = read_csv(TMPDIR + ""/foo.csv"", ["" "", ""\t""]);", "errcatch") <> 10000 then bugmes();quit;end
+msg = lasterror();
+if msg <> msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "read_csv", 2) then bugmes();quit;end
+if execstr("B1 = read_csv(TMPDIR + ""/foo.csv"", ""\t"");", "errcatch") <> 0 then bugmes();quit;end
+if execstr("B2 = read_csv(TMPDIR + ""/foo.csv"", "" "");", "errcatch") <> 0 then bugmes();quit;end
+if or(evstr(B1) <> evstr(B2)) then bugmes();quit;end
+if or(A <> evstr(B2)) then bugmes();quit;end
diff --git a/scilab/modules/spreadsheet/tests/nonreg_tests/bug_8532.tst b/scilab/modules/spreadsheet/tests/nonreg_tests/bug_8532.tst
new file mode 100644 (file)
index 0000000..16e3c2a
--- /dev/null
@@ -0,0 +1,29 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2010 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// 
+// <-- JVM NOT MANDATORY -->
+//
+// <-- Non-regression test for bug 8532 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=8532
+//
+// <-- Short Description -->
+// size of input arguments of read_csv was no verified.
+//
+
+A = 1:50;
+mputl(strcat(string(A),ascii(9)+" "), TMPDIR + '/foo.csv');
+
+if execstr("B = read_csv(TMPDIR + ""/foo.csv"", ["" "", ""\t""]);", "errcatch") <> 10000 then pause, end
+msg = lasterror();
+if msg <> msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "read_csv", 2) then pause, end
+
+if execstr("B1 = read_csv(TMPDIR + ""/foo.csv"", ""\t"");", "errcatch") <> 0 then pause, end
+if execstr("B2 = read_csv(TMPDIR + ""/foo.csv"", "" "");", "errcatch") <> 0 then pause, end
+if or(evstr(B1) <> evstr(B2)) then pause, end
+if or(A <> evstr(B2)) then pause, end
\ No newline at end of file