diff options
author | Explorer09 <explorer09@gmail.com> | 2024-04-15 21:48:43 +0800 |
---|---|---|
committer | cgzones <cgzones@googlemail.com> | 2024-04-26 19:35:15 +0200 |
commit | d2ec14fa4ab944760d3e6740d8ac3ae540dd12a0 (patch) | |
tree | 67dd84aa2a09805232cd45d4a17bd7a70655b9b1 /RichString.c | |
parent | e54871b6795ac59ee7f98ecfbec50368513d0c6f (diff) |
Fix GCC build warning in NetBSD 10main
The warning message is
"array subscript has type 'char' [-Wchar-subscripts]"
Fix this by casting to 'unsigned char' before passing any character to a
`<ctype.h>` function.
Also add an assertion to RichString_writeFromAscii() to ensure the
characters in the string are all in ASCII range.
Signed-off-by: Kang-Che Sung <explorer09@gmail.com>
Diffstat (limited to 'RichString.c')
-rw-r--r-- | RichString.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/RichString.c b/RichString.c index 556674b0..248b3ae0 100644 --- a/RichString.c +++ b/RichString.c @@ -9,7 +9,9 @@ in the source distribution for its full text. #include "RichString.h" +#include <assert.h> #include <ctype.h> +#include <limits.h> // IWYU pragma: keep #include <stdlib.h> #include <string.h> @@ -144,7 +146,8 @@ static inline int RichString_writeFromAscii(RichString* this, int attrs, const c int newLen = from + len; RichString_setLen(this, newLen); for (int i = from, j = 0; i < newLen; i++, j++) { - this->chptr[i] = (CharType) { .attr = attrs & 0xffffff, .chars = { (isprint(data[j]) ? data[j] : L'\xFFFD') } }; + assert((unsigned char)data[j] <= SCHAR_MAX); + this->chptr[i] = (CharType) { .attr = attrs & 0xffffff, .chars = { (isprint((unsigned char)data[j]) ? data[j] : L'\xFFFD') } }; } return len; |