Mercurial > octave
changeset 32027:783b69da1b45 stable
undo_string_escapes: Return '\0' for NUL byte input (bug #64051)
* utils.cc (undo_string_escape): Delete test of input character
'c' which short-circuited function and returned immediately for
"c == 0".
* utils.cc (Fundo_string_escapes): Add BIST tests for NUL byte.
Add expected pattern for %!error input validation tests.
author | Rik <rik@octave.org> |
---|---|
date | Sun, 16 Apr 2023 09:05:11 -0700 |
parents | e3793a404ea1 |
children | 9918d52ee76a bc681594872a |
files | libinterp/corefcn/utils.cc |
diffstat | 1 files changed, 9 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/utils.cc Sun Apr 16 14:27:45 2023 +0200 +++ b/libinterp/corefcn/utils.cc Sun Apr 16 09:05:11 2023 -0700 @@ -985,15 +985,12 @@ const char * undo_string_escape (char c) { - if (! c) - return ""; - switch (c) { - case '\0': + case '\0': // NUL byte return R"(\0)"; - case '\a': + case '\a': // alarm return R"(\a)"; case '\b': // backspace @@ -1084,10 +1081,10 @@ %!assert (undo_string_escapes ("foo\nbar"), "foo\\nbar") %!assert (undo_string_escapes (["foo", char(10), "bar"]), "foo\\nbar") -%!assert (undo_string_escapes ("\a\b\f\n\r\t\v"), '\a\b\f\n\r\t\v') -%!assert (undo_string_escapes ("\a\b\f\n\r\t\v"), "\\a\\b\\f\\n\\r\\t\\v") -%!assert (undo_string_escapes (char ([7, 8, 12, 10, 13, 9, 11])), -%! "\\a\\b\\f\\n\\r\\t\\v") +%!assert (undo_string_escapes ("\0\a\b\f\n\r\t\v"), '\0\a\b\f\n\r\t\v') +%!assert (undo_string_escapes ("\0\a\b\f\n\r\t\v"), "\\0\\a\\b\\f\\n\\r\\t\\v") +%!assert (undo_string_escapes (char ([0, 7, 8, 12, 10, 13, 9, 11])), +%! "\\0\\a\\b\\f\\n\\r\\t\\v") %!assert (undo_string_escapes ("\\"), '\\') %!assert (undo_string_escapes ("\\"), "\\\\") @@ -1096,9 +1093,9 @@ %!assert (undo_string_escapes ("\"double-quoted\""), '\"double-quoted\"') %!assert (undo_string_escapes ("\"double-quoted\""), "\\\"double-quoted\\\"") -%!error undo_string_escapes () -%!error undo_string_escapes ("foo", "bar") -%!error undo_string_escapes (3) +%!error <Invalid call> undo_string_escapes () +%!error <Invalid call> undo_string_escapes ("foo", "bar") +%!error <STRING argument> undo_string_escapes (3) */ DEFUN (is_absolute_filename, args, ,