bug 11997 : In case of invalid variable name, save function return error instead... 04/12404/2
Antoine ELIAS [Mon, 2 Sep 2013 14:09:31 +0000 (16:09 +0200)]
Change-Id: I7526e792e24402ce12f008f61cfc49dc4f83e4a2

scilab/CHANGES_5.5.X
scilab/modules/io/sci_gateway/c/sci_save.c
scilab/modules/io/tests/nonreg_tests/bug_11997.dia.ref [new file with mode: 0644]
scilab/modules/io/tests/nonreg_tests/bug_11997.tst [new file with mode: 0644]

index 279b94c..2e3694c 100644 (file)
@@ -407,6 +407,8 @@ Bug fixes
 
 * Bug #11891 fixed - Fisher ratio could be inaccurate for one-way ANOVA.
 
+* Bug #11997 fixed - In case of invalid variable name, save function return error instead of compatibility warning.
+*
 * Bug #12034 fixed - max function did not manage empty matrices.
 
 * Bug #12045 fixed - repmat returned wrong result if numbers of input matrix were not double.
index b734fcc..26fbb88 100644 (file)
@@ -14,6 +14,7 @@
 #include "stack-c.h"
 #include "api_scilab.h"
 #include "localization.h"
+#include "scierror.h"
 #include "sciprint.h"
 #include "warningmode.h"
 /*--------------------------------------------------------------------------*/
@@ -27,6 +28,8 @@ int sci_save(char *fname, unsigned long fname_len)
 
     int* piAddr1    = NULL;
     int iType1      = 0;
+    BOOL bWarning   = TRUE;
+    int iErrorRhs = 0;
 
     CheckRhs(1, 100000);
     CheckLhs(0, 1);
@@ -107,6 +110,8 @@ int sci_save(char *fname, unsigned long fname_len)
                         // Try old save because here the input variable can be of type "string" but not a variable name
                         // Ex: a=""; save(filename, a);
                         iOldSave = TRUE;
+                        bWarning = FALSE;
+                        iErrorRhs = i;
                         break;
                     }
 
@@ -142,14 +147,23 @@ int sci_save(char *fname, unsigned long fname_len)
 
     if (iOldSave)
     {
-        //show warning only for variable save, not for environment.
-        if (getWarningMode() && Rhs > 1)
+        if (bWarning)
         {
-            sciprint(_("%s: Scilab 6 will not support the file format used.\n"), _("Warning"));
-            sciprint(_("%s: Please quote the variable declaration. Example, save('myData.sod',a) becomes save('myData.sod','a').\n"), _("Warning"));
-            sciprint(_("%s: See help('save') for the rational.\n"), _("Warning"));
+            //show warning only for variable save, not for environment
+            if (getWarningMode() && Rhs > 1)
+            {
+                sciprint(_("%s: Scilab 6 will not support the file format used.\n"), _("Warning"));
+                sciprint(_("%s: Please quote the variable declaration. Example, save('myData.sod',a) becomes save('myData.sod','a').\n"), _("Warning"));
+                sciprint(_("%s: See help('save') for the rational.\n"), _("Warning"));
+            }
+
+            C2F(intsave)();
+        }
+        else
+        {
+            Scierror(248, _("Wrong value for argument #%d: Valid variable name expected.\n"), iErrorRhs);
+            return 0;
         }
-        C2F(intsave)();
     }
 
     return 0;
diff --git a/scilab/modules/io/tests/nonreg_tests/bug_11997.dia.ref b/scilab/modules/io/tests/nonreg_tests/bug_11997.dia.ref
new file mode 100644 (file)
index 0000000..68c0361
--- /dev/null
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 11997 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11997
+//
+// <-- Short Description -->
+// save function show compatibility warning for non existing variable instead of error
+clear a;
+errmsg = msprintf(_("Wrong value for argument #%d: Valid variable name expected.\n"), 2);
+assert_checkerror("save(TMPDIR + ""/myData.sod"", ""a"")", errmsg);
diff --git a/scilab/modules/io/tests/nonreg_tests/bug_11997.tst b/scilab/modules/io/tests/nonreg_tests/bug_11997.tst
new file mode 100644 (file)
index 0000000..e8573aa
--- /dev/null
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2012 - Antoine ELIAS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 11997 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=11997
+//
+// <-- Short Description -->
+// save function show compatibility warning for non existing variable instead of error
+
+clear a;
+errmsg = msprintf(_("Wrong value for argument #%d: Valid variable name expected.\n"), 2);
+assert_checkerror("save(TMPDIR + ""/myData.sod"", ""a"")", errmsg);
+