bug 1412
Allan CORNET [Sat, 30 May 2009 12:09:59 +0000 (14:09 +0200)]
scilab/CHANGES_5.2.X
scilab/modules/output_stream/src/c/errmsg.c
scilab/modules/output_stream/tests/nonreg_tests/bug_1412.dia.ref [new file with mode: 0644]
scilab/modules/output_stream/tests/nonreg_tests/bug_1412.tst [new file with mode: 0644]

index 7cdaa17..44cb724 100644 (file)
@@ -130,6 +130,8 @@ manage this format but ISO-8859.
 Bug fixes:
 ==========
 
+* bug 1412 fixed - A(3,3)=%s,A(:)=%z causes scilab to hang
+
 * bug 1776 fixed - funcprot accepts non-integer arguments
 
 * bug 2570 fixed - LCC does not work with some "stk" ref on some old toolboxes.
index faf4176..b071f26 100644 (file)
@@ -56,7 +56,7 @@ int C2F(errmsg)(int *n,int *errtyp)
 
        *errtyp = 0; /* by default errors are recoverable */
        /* errors not recoverable aren't catchable by top
-try,catch */ 
+       try,catch */ 
        /* errors 2,3,16,26,31,34,35,40,46,47,276*/
 
     switch ((int)*n)
@@ -1485,7 +1485,7 @@ Otherwise, send a bug report to :\n"),get_sci_data_strings(SAVE_ID));
                {
                        displayAndStoreError(_("Wrong value for argument %d: eigenvalues must have negative real parts.\n"),Err);
                }
-               break;
+       break;
                case 270:
                {
                        displayAndStoreError(_("Wrong value for argument %d: eigenvalues modulus must be less than one.\n"),Err);
@@ -1527,18 +1527,25 @@ Otherwise, send a bug report to :\n"),get_sci_data_strings(SAVE_ID));
                        displayAndStoreError(_("Too many commands defined.\n"));
                }
                break;
-                case 278: 
-                 {
-                   char *NameVarOnStack = getConvertedNameFromStack(CVNAME_READING_TYPE_4);
-                   if (NameVarOnStack)
-                     {
-                       displayAndStoreError(_("%s: Input arguments should have the same formal variable name.\n"),NameVarOnStack);
-                       FREE(NameVarOnStack);
-                       NameVarOnStack = NULL;
-                     }
-                 }
-                 break;
-                 case 279: case 280:
+        case 278: 
+               {
+                       char *NameVarOnStack = getConvertedNameFromStack(CVNAME_READING_TYPE_4);
+                       if (NameVarOnStack)
+                       {
+                               if (NameVarOnStack[0] != '0')
+                               {
+                                       displayAndStoreError(_("%s: Input arguments should have the same formal variable name.\n"),NameVarOnStack);
+                               }
+                               else
+                               {
+                                       displayAndStoreError(_("Input arguments should have the same formal variable name.\n"));
+                               }
+                               FREE(NameVarOnStack);
+                               NameVarOnStack = NULL;
+                       }
+               }
+               break;
+        case 279: case 280:
                {
                        /* no message  */
                }
@@ -1565,7 +1572,6 @@ Otherwise, send a bug report to :\n"),get_sci_data_strings(SAVE_ID));
                                displayAndStoreError(buffer);
                                FREE(buffer);
                        }
-
                }
                break;
     }
diff --git a/scilab/modules/output_stream/tests/nonreg_tests/bug_1412.dia.ref b/scilab/modules/output_stream/tests/nonreg_tests/bug_1412.dia.ref
new file mode 100644 (file)
index 0000000..c90e198
--- /dev/null
@@ -0,0 +1,17 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- JVM NOT MANDATORY -->
+// <-- Non-regression test for bug 1412 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1412
+//
+// Causes scilab to hang, using 95% of CPU.
+// and display a incorrect error
+A(3,3)=%s;
+ierr = execstr('A(:)=%z;','errcatch');
+if ierr <> 278 then bugmes();quit;end
diff --git a/scilab/modules/output_stream/tests/nonreg_tests/bug_1412.tst b/scilab/modules/output_stream/tests/nonreg_tests/bug_1412.tst
new file mode 100644 (file)
index 0000000..466f7d3
--- /dev/null
@@ -0,0 +1,20 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - DIGITEO - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- JVM NOT MANDATORY -->
+
+// <-- Non-regression test for bug 1412 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=1412
+//
+// Causes scilab to hang, using 95% of CPU.
+// and display a incorrect error
+
+A(3,3)=%s;
+ierr = execstr('A(:)=%z;','errcatch');
+if ierr <> 278 then pause,end
\ No newline at end of file