utf8_in2, when working in backward mode, is assuming that we are giving the address of the last byte of the previous character (see all other calls to utf8_in2). Otherwise, utf8_in2 returns the size of the current multibyte character instead of that of the previous multibyte character.master
@@ -2084,7 +2084,7 @@ static void MatchRule(Translator *tr, char *word[], char *word_start, int group_ | |||
failed = 1; | |||
break; | |||
} | |||
p -= utf8_in2(&letter_w, p, 1); | |||
p -= utf8_in2(&letter_w, p-1, 1); | |||
} | |||
if (!failed) | |||
add_points = 3; |