summaryrefslogtreecommitdiffstats
path: root/RichString.c
diff options
context:
space:
mode:
authorExplorer09 <explorer09@gmail.com>2024-04-15 21:48:43 +0800
committercgzones <cgzones@googlemail.com>2024-04-26 19:35:15 +0200
commitd2ec14fa4ab944760d3e6740d8ac3ae540dd12a0 (patch)
tree67dd84aa2a09805232cd45d4a17bd7a70655b9b1 /RichString.c
parente54871b6795ac59ee7f98ecfbec50368513d0c6f (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.c5
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;

© 2014-2024 Faster IT GmbH | imprint | privacy policy