fzy
terminal fuzzy finder picker
git clone https://9o.is/git/fzy.git
commit a3c3f139a0b947760d8d1551b65a21a63bc65ea8 parent fab2e7b704f20ffc87957bbca6ce8abc49047030 Author: John Hawthorn <john@hawthorn.email> Date: Fri, 27 Dec 2019 19:39:50 -0800 Avoid VLA in tty_interface Diffstat:
| M | src/match.c | | | 2 | -- |
| M | src/match.h | | | 2 | ++ |
| M | src/tty_interface.c | | | 4 | ++-- |
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/match.c b/src/match.c @@ -32,8 +32,6 @@ int has_match(const char *needle, const char *haystack) { #define max(a, b) (((a) > (b)) ? (a) : (b)) -#define MATCH_MAX_LEN 1024 - struct match_struct { int needle_len; int haystack_len; diff --git a/src/match.h b/src/match.h @@ -7,6 +7,8 @@ typedef double score_t; #define SCORE_MAX INFINITY #define SCORE_MIN -INFINITY +#define MATCH_MAX_LEN 1024 + int has_match(const char *needle, const char *haystack); score_t match_positions(const char *needle, const char *haystack, size_t *positions); score_t match(const char *needle, const char *haystack); diff --git a/src/tty_interface.c b/src/tty_interface.c @@ -36,8 +36,8 @@ static void draw_match(tty_interface_t *state, const char *choice, int selected) char *search = state->last_search; int n = strlen(search); - size_t positions[n + 1]; - for (int i = 0; i < n + 1; i++) + size_t positions[MATCH_MAX_LEN]; + for (int i = 0; i < n + 1 && i < MATCH_MAX_LEN; i++) positions[i] = -1; score_t score = match_positions(search, choice, &positions[0]);