Mercurial > octave
changeset 33539:85c8686b78e9
data.cc: Minor addition to input validation for sort()
`sort()` was allowing non-integer dimensions like `sort (magic (3), 1.6)`. This
patch fixes that behavior.
* data.cc (Fsort): Add integer validation, comment other validations. Add BISTs.
author | Arun Giridhar <arungiridhar@gmail.com> |
---|---|
date | Tue, 07 May 2024 19:34:15 -0400 |
parents | 4ef1d6ab26e4 |
children | d203daf66e1c c7b92fa723cc |
files | libinterp/corefcn/data.cc |
diffstat | 1 files changed, 9 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/data.cc Mon May 06 20:47:55 2024 +0200 +++ b/libinterp/corefcn/data.cc Tue May 07 19:34:15 2024 -0400 @@ -7120,8 +7120,14 @@ } else { + // Check dim is scalar, not vector or array. if (! args(1).is_scalar_type ()) error ("sort: DIM must be a positive scalar integer"); + + // Check for inputs like sort (magic(3), 1.6). + dim = args(1).strict_int_value ("sort: DIM must be a positive scalar integer"); + + // Check for inf. dim = args(1).nint_value () - 1; if (dim < 0) error ("sort: DIM must be a positive scalar integer"); @@ -7389,6 +7395,9 @@ %!error <Invalid call> sort (1, 2, 3, 4) %!error <MODE must be either "ascend" or "descend"> sort (1, "foobar") %!error <DIM must be a positive scalar integer> sort (1, [1 2 3]) +%!error <DIM must be a positive scalar integer> sort ([1 2; 3 4], 1.234) +%!error <DIM must be a positive scalar integer> sort ([1 2; 3 4], nan) +%!error <DIM must be a positive scalar integer> sort ([1 2; 3 4], inf) %!error <DIM argument must precede MODE argument> sort (1, "ascend", 1) %!error <MODE must be a string> sort (1, 1, 1) %!error <MODE must be either "ascend" or "descend"> sort (1, 1, "foobar")