GUI: check number of input argmuents in macros 83/13183/3
Paul Bignier [Tue, 19 Nov 2013 15:55:51 +0000 (16:55 +0100)]
Some of linear_algebra's macros did not check their input arguments number.

Change-Id: Idc11c2731fffaa15e2e8410337eb9d5c2c71f8af

scilab/modules/gui/macros/getvalue.sci
scilab/modules/gui/macros/menubar.sci
scilab/modules/gui/macros/tree_show.sci
scilab/modules/gui/macros/x_matrix.sci

index b571aae..35a9afb 100644 (file)
@@ -70,7 +70,10 @@ function [%ok,%1,%2,%3,%4,%5,...
     // 12/02/07 -Alan- : fix (variable evaluation of %scicos_context)
     //
     // Copyright INRIA
-    [%lhs,%rhs]=argn(0)
+    [%lhs, %rhs] = argn(0)
+    if %rhs < 3 then
+        error(sprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "getvalue", 3, 4));
+    end
 
     %nn=prod(size(%labels))
     if %lhs<>%nn+2&%lhs<>%nn+1 then error(41),end
index 89d5a2c..666282b 100644 (file)
@@ -7,12 +7,17 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
 function menubar(win,menus)
 
-    names=menus(1)
+    if argn(2) < 2 then
+        error(sprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "menubar", 2));
+    end
+
+    names = menus(1)
     for k=size(names,"*"):-1:1
-        delmenu(win,names(k))
+        delmenu(win, names(k))
     end
 
     for k=1:size(names,"*")
-        addmenu(win,names(k),menus(k+1),list(0,names(k)))
+        addmenu(win, names(k), menus(k+1), list(0, names(k)))
     end
+
 endfunction
index e286a69..df2b3df 100644 (file)
 
 function tree_show(x,titletop)
 
-    if type(x)<>16&type(x)<>17&type(x)<>15 then
+    if argn(2) < 1 then
+        error(sprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "tree_show", 1, 2));
+    end
+
+    if type(x)<>16 & type(x)<>17 & type(x)<>15 then
         error("Wrong type; input must be a list.")
     end
 
index c86d605..16dd3d8 100644 (file)
@@ -5,17 +5,26 @@
 // you should have received as part of this distribution.  The terms
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
-function [y]=x_matrix(mes,x)
+function [y] = x_matrix(mes, x)
+
+    [lhs, rhs] = argn(0);
+    if rhs < 2 then
+        error(sprintf(_("%s: Wrong number of input argument(s): %d expected.\n"), "x_matrix", 2));
+    end
 
     if type(x)<>1 then
         error(msprintf(gettext("%s: Wrong type for input argument #%d: A real expected.\n"), "x_matrix", 2));
     end
-    [n1,n2]=size(x);
-    z=string(x);
-    y=[];
-    for i=1:n1,y=[y;strcat(z(i,:),", ")];end
-    y(1)="["+y(1);
-    for i=2:n1,y(i)=" "+y(i);end
-    y(n1)=y(n1)+"]";
-    y=evstr(x_dialog(mes,y));
+    [n1,n2] = size(x);
+    z = string(x);
+    y = [];
+    for i=1:n1,
+        y = [y; strcat(z(i,:), ", ")];
+    end
+    y(1) = "["+y(1);
+    for i=2:n1,
+        y(i) = " "+y(i);
+    end
+    y(n1) = y(n1)+"]";
+    y = evstr(x_dialog(mes,y));
 endfunction