From 9ab8c44a5c30c47a5b2ce66f27b46d384d446df2 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku <kaz@kylheku.com> Date: Tue, 8 Sep 2015 07:40:31 -0700 Subject: Bugfix: underrun on empty line tab completion. * parser.c (provide_completions): If strlen(data) is zero, the calculation of ptr places it at data - 1. Instead, let us calculate a zero value for ptr and then bail based on this. --- parser.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parser.c b/parser.c index 6b5a0593..92c67829 100644 --- a/parser.c +++ b/parser.c @@ -418,7 +418,7 @@ static void provide_completions(const char *data, void *ctx) { const char *gly = "!$%&*+-<=>?\\_~/"; - const char *ptr = data + strlen(data) - 1; + const char *ptr = data[0] ? data + strlen(data) - 1 : 0; const char *sym = 0, *pkg = 0; const char *end; val keyword = nil; @@ -426,6 +426,9 @@ static void provide_completions(const char *data, (void) ctx; + if (!ptr) + return; + while ((isalnum(*ptr) || strchr(gly, *ptr)) && (sym = ptr) && ptr > data) ptr--; -- cgit v1.2.3