diff options
author | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2021-09-27 10:26:15 -0400 |
---|---|---|
committer | Andrew J. Schorr <aschorr@telemetry-investments.com> | 2021-09-27 10:26:15 -0400 |
commit | 58431879b19a1b1cd5ff3a6575be07c46c73db39 (patch) | |
tree | 74921c1095e07cc988a54c6ce8c09ac9975f57d7 | |
parent | d249840cccab9490a5fd9580ba5aa6181930bca5 (diff) | |
download | egawk-58431879b19a1b1cd5ff3a6575be07c46c73db39.tar.gz egawk-58431879b19a1b1cd5ff3a6575be07c46c73db39.tar.bz2 egawk-58431879b19a1b1cd5ff3a6575be07c46c73db39.zip |
Patch ord function to avoid returning negative values.
-rw-r--r-- | extension/ChangeLog | 5 | ||||
-rw-r--r-- | extension/ordchr.c | 2 | ||||
-rw-r--r-- | test/ChangeLog | 4 | ||||
-rw-r--r-- | test/ordchr.awk | 1 | ||||
-rw-r--r-- | test/ordchr.ok | 1 |
5 files changed, 12 insertions, 1 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog index f4e6ea41..d795260b 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,8 @@ +2021-09-27 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * ordchr.c (do_ord): Need to cast to unsigned char to avoid returning + negative values. + 2021-09-22 Arnold D. Robbins <arnold@skeeve.com> * configure.ac: Update version to 5.1.1 in preparation for release. diff --git a/extension/ordchr.c b/extension/ordchr.c index e1afade5..d367988b 100644 --- a/extension/ordchr.c +++ b/extension/ordchr.c @@ -67,7 +67,7 @@ do_ord(int nargs, awk_value_t *result, struct awk_ext_func *unused) assert(result != NULL); if (get_argument(0, AWK_STRING, & str)) { - ret = str.str_value.str[0]; + ret = (unsigned char)str.str_value.str[0]; } else if (do_lint) lintwarn(ext_id, _("ord: first argument is not a string")); diff --git a/test/ChangeLog b/test/ChangeLog index 18025e7b..553ba2b5 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,7 @@ +2021-09-27 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * ordchr.awk, ordchr.awk: Add test for ord signedness. + 2021-09-19 Arnold D. Robbins <arnold@skeeve.com> * Makefile.am (EXTRA_DIST): Remove commas.in from the list. diff --git a/test/ordchr.awk b/test/ordchr.awk index 0295105e..5d6ffe9f 100644 --- a/test/ordchr.awk +++ b/test/ordchr.awk @@ -7,4 +7,5 @@ BEGIN { # test if type conversion between strings and numbers is working properly print chr(ord(0)) print ord(chr("65")) + print ord(chr("159")) } diff --git a/test/ordchr.ok b/test/ordchr.ok index 86d901e9..be3997c6 100644 --- a/test/ordchr.ok +++ b/test/ordchr.ok @@ -3,3 +3,4 @@ A 65 0 65 +159 |