Fix behavior of non-ASCII bytes with INCHARMAP (#1308)

This commit is contained in:
Sylvie
2024-02-19 02:09:55 -05:00
committed by GitHub
parent f00e57a0ed
commit a02687a83e
2 changed files with 13 additions and 2 deletions

View File

@@ -180,7 +180,7 @@ bool charmap_HasChar(char const *input)
struct Charnode const *node = &charmap->nodes[0];
for (; *input; input++) {
size_t next = node->next[*input - 1];
size_t next = node->next[(uint8_t)*input - 1];
if (!next)
return false;
@@ -212,7 +212,7 @@ size_t charmap_ConvertNext(char const **input, uint8_t **output)
size_t rewindDistance = 0;
for (;;) {
uint8_t c = **input - 1;
uint8_t c = (uint8_t)**input - 1;
if (**input && node->next[c]) {
// Consume that char

View File

@@ -0,0 +1,11 @@
MACRO test
charmap \1, 42
assert charlen(\1) == 1
assert incharmap(\1) == 1
ENDM
test "a" ; one ASCII
test "hi~!!1" ; many ASCII
test "デ" ; one UTF-8
test "グレイシア" ; many UTF-8
test "Pokémon" ; mixed