Skip to content

Commit 7812c55

Browse files
committed
Fix segfault when encountering utf-8 characters
1 parent 010f4cf commit 7812c55

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
## 0.7 (unreleased)
22

33
Bugfixes:
4+
5+
- Fixed a segfault when encountering non-ascii characters
46
- Fixed building against musl libc
57

68
## 0.6 (2016-07-26)

src/bonus.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,6 @@ const size_t bonus_index[256] = {
103103
ASSIGN_DIGIT(1)
104104
};
105105

106-
#define COMPUTE_BONUS(last_ch, ch) (bonus_states[bonus_index[(size_t)(ch)]][(size_t)(last_ch)])
106+
#define COMPUTE_BONUS(last_ch, ch) (bonus_states[bonus_index[(unsigned char)(ch)]][(unsigned char)(last_ch)])
107107

108108
#endif

test/fzytest.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,17 @@ void test_choices_without_search() {
268268
choices_destroy(&choices);
269269
}
270270

271+
/* Regression test for segfault */
272+
void test_choices_unicode() {
273+
choices_t choices;
274+
choices_init(&choices);
275+
276+
choices_add(&choices, "Edmund Husserl - Méditations cartésiennes - Introduction a la phénoménologie.pdf");
277+
choices_search(&choices, "e");
278+
279+
choices_destroy(&choices);
280+
}
281+
271282
void summary() {
272283
printf("%i tests, %i assertions, %i failures\n", testsrun, assertionsrun, testsfailed);
273284
}
@@ -298,6 +309,7 @@ int main(int argc, char *argv[]) {
298309
runtest(test_choices_1);
299310
runtest(test_choices_2);
300311
runtest(test_choices_without_search);
312+
runtest(test_choices_unicode);
301313

302314
summary();
303315

0 commit comments

Comments
 (0)