From ef7dd8db2dc6816d303b4f5b10b99b98b11b3ed5 Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 6 Jul 2015 14:00:09 +0100 Subject: [PATCH] py/repl: Fix case where shorter names are shadowed by longer names. Previous to this patch, if "abcd" and "ab" were possible completions to tab-completing "a", then tab would expand to "abcd" straight away if this identifier appeared first in the dict. --- py/repl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/py/repl.c b/py/repl.c index 649ade161b..736dfa3f69 100644 --- a/py/repl.c +++ b/py/repl.c @@ -187,7 +187,9 @@ mp_uint_t mp_repl_autocomplete(const char *str, mp_uint_t len, const mp_print_t match_str = d_str; match_len = d_len; } else { - for (mp_uint_t j = s_len; j < match_len && j < d_len; ++j) { + // search for longest common prefix of match_str and d_str + // (assumes these strings are null-terminated) + for (mp_uint_t j = s_len; j <= match_len && j <= d_len; ++j) { if (match_str[j] != d_str[j]) { match_len = j; break;