# HG changeset patch # User Markus Mützel # Date 1649781078 -7200 # Node ID d7f799e6d836644132d25bd0cdd22dd5e9e1db09 # Parent b6fb3e2a20241ad8828f955f521010aae1742c23 Check that dimensions input arguments for ones/zeros/... are scalar (bug #62291). * libinterp/corefcn/data.cc (fill_matrix): Check that dimensions input arguments are scalar. Add BISTs. diff -r b6fb3e2a2024 -r d7f799e6d836 libinterp/corefcn/data.cc --- a/libinterp/corefcn/data.cc Wed Apr 13 19:30:14 2022 +0200 +++ b/libinterp/corefcn/data.cc Tue Apr 12 18:31:18 2022 +0200 @@ -4148,7 +4148,12 @@ dims.resize (nargin); for (int i = 0; i < nargin; i++) - dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + { + if (args(i).numel () > 1) + error ("%s: dimensions must be scalars.", fcn); + + dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + } } break; } @@ -4300,7 +4305,12 @@ dims.resize (nargin); for (int i = 0; i < nargin; i++) - dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + { + if (args(i).numel () > 1) + error ("%s: dimensions must be scalars.", fcn); + + dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + } } break; } @@ -4382,7 +4392,12 @@ dims.resize (nargin); for (int i = 0; i < nargin; i++) - dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + { + if (args(i).numel () > 1) + error ("%s: dimensions must be scalars.", fcn); + + dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + } } break; } @@ -4446,7 +4461,12 @@ dims.resize (nargin); for (int i = 0; i < nargin; i++) - dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + { + if (args(i).numel () > 1) + error ("%s: dimensions must be scalars.", fcn); + + dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + } } break; } @@ -4524,7 +4544,12 @@ dims.resize (nargin); for (int i = 0; i < nargin; i++) - dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + { + if (args(i).numel () > 1) + error ("%s: dimensions must be scalars.", fcn); + + dims(i) = (args(i).isempty () ? 0 : args(i).idx_type_value (true)); + } } break; } @@ -4618,6 +4643,10 @@ %!error ones (1, 1.1) %!error ones ([1, 1.1]) %!error ones (3, 3, 3, "like", speye (1)) +%!error ones (1:3, 1) +%!error ones (1, 1:3) +%!error ones (1, 2, 1:3) +%!error ones (1:3, 1, "like", single (1)) */ /* @@ -4699,6 +4728,10 @@ %!error zeros (1, 1.1, 2) %!error zeros ([1, 1.1, 2]) %!error zeros (3, 3, 3, "like", speye (1)) +%!error zeros (1:3, 1) +%!error zeros (1, 1:3) +%!error zeros (1, 2, 1:3) +%!error zeros (1:3, 1, "like", single (1)) */ DEFUN (Inf, args, , @@ -4772,6 +4805,10 @@ %!error Inf (3, 4, 5, "int8") %!error Inf (3, 3, "like", true) %!error Inf (2, "like", uint8 (1)) +%!error Inf (1:3, 1) +%!error Inf (1, 1:3) +%!error Inf (1, 2, 1:3) +%!error Inf (1:3, 1, "like", single (1)) */ DEFUN (NaN, args, , @@ -4853,6 +4890,10 @@ %!error NaN (3, 4, 5, "int8") %!error NaN (3, 3, "like", true) %!error NaN (2, "like", uint8 (1)) +%!error NaN (1:3, 1) +%!error NaN (1, 1:3) +%!error NaN (1, 2, 1:3) +%!error NaN (1:3, 1, "like", single (1)) */ DEFUN (e, args, , @@ -5005,6 +5046,10 @@ %!assert (eps (single ([1/2 1 2 realmax("single") 0 realmin("single")/2 realmin("single")/16 Inf NaN])), %! single ([2^-24 2^-23 2^-22 2^104 2^-149 2^-149 2^-149 NaN NaN])) %!error eps (uint8 ([0 1 2])) +%!error eps (1:3, 1) +%!error eps (1, 1:3) +%!error eps (1, 2, 1:3) +%!error eps (1:3, 1, "single") */ DEFUN (pi, args, , @@ -5245,6 +5290,9 @@ %!error false (2, 3, "double") %!error false (2, 1, "like", sparse (1)) +%!error false (1:3, 1) +%!error false (1, 1:3) +%!error false (1, 2, 1:3) */ DEFUN (true, args, , @@ -5277,6 +5325,9 @@ %!error true (2, 3, "double") %!error true (2, 1, "like", double (1)) +%!error true (1:3, 1) +%!error true (1, 1:3) +%!error true (1, 2, 1:3) */ template