From 7812c553d33ce105afbc7696fb9e01ca92fba2ea Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Wed, 3 Aug 2016 23:43:36 -0700 Subject: Fix segfault when encountering utf-8 characters --- CHANGELOG.md | 2 ++ src/bonus.h | 2 +- test/fzytest.c | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6625249..1cae016 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ## 0.7 (unreleased) Bugfixes: + + - Fixed a segfault when encountering non-ascii characters - Fixed building against musl libc ## 0.6 (2016-07-26) diff --git a/src/bonus.h b/src/bonus.h index 43a42e2..89cafbe 100644 --- a/src/bonus.h +++ b/src/bonus.h @@ -103,6 +103,6 @@ const size_t bonus_index[256] = { ASSIGN_DIGIT(1) }; -#define COMPUTE_BONUS(last_ch, ch) (bonus_states[bonus_index[(size_t)(ch)]][(size_t)(last_ch)]) +#define COMPUTE_BONUS(last_ch, ch) (bonus_states[bonus_index[(unsigned char)(ch)]][(unsigned char)(last_ch)]) #endif diff --git a/test/fzytest.c b/test/fzytest.c index 0e0bad0..3786cd7 100644 --- a/test/fzytest.c +++ b/test/fzytest.c @@ -268,6 +268,17 @@ void test_choices_without_search() { choices_destroy(&choices); } +/* Regression test for segfault */ +void test_choices_unicode() { + choices_t choices; + choices_init(&choices); + + choices_add(&choices, "Edmund Husserl - Méditations cartésiennes - Introduction a la phénoménologie.pdf"); + choices_search(&choices, "e"); + + choices_destroy(&choices); +} + void summary() { printf("%i tests, %i assertions, %i failures\n", testsrun, assertionsrun, testsfailed); } @@ -298,6 +309,7 @@ int main(int argc, char *argv[]) { runtest(test_choices_1); runtest(test_choices_2); runtest(test_choices_without_search); + runtest(test_choices_unicode); summary(); -- cgit v1.2.3