py/{modbuiltins,repl}: Start qstr probing from after empty qstr.

The list of qstrs starts with MP_QSTR_NULL followed by MP_QSTR_, and these
should never appear in dir() or REPL tab completion, so skip them.
This commit is contained in:
Damien George 2018-05-09 16:15:02 +10:00
parent c1115d931f
commit eb88803ac8
2 changed files with 2 additions and 2 deletions

View File

@ -186,7 +186,7 @@ STATIC mp_obj_t mp_builtin_dir(size_t n_args, const mp_obj_t *args) {
// Make a list of names in the given object // Make a list of names in the given object
// Implemented by probing all possible qstrs with mp_load_method_maybe // Implemented by probing all possible qstrs with mp_load_method_maybe
size_t nqstr = QSTR_TOTAL(); size_t nqstr = QSTR_TOTAL();
for (size_t i = 1; i < nqstr; ++i) { for (size_t i = MP_QSTR_ + 1; i < nqstr; ++i) {
mp_obj_t dest[2]; mp_obj_t dest[2];
mp_load_method_maybe(args[0], i, dest); mp_load_method_maybe(args[0], i, dest);
if (dest[0] != MP_OBJ_NULL) { if (dest[0] != MP_OBJ_NULL) {

View File

@ -176,7 +176,7 @@ size_t mp_repl_autocomplete(const char *str, size_t len, const mp_print_t *print
const char *match_str = NULL; const char *match_str = NULL;
size_t match_len = 0; size_t match_len = 0;
qstr q_first = 0, q_last; qstr q_first = 0, q_last;
for (qstr q = 1; q < nqstr; ++q) { for (qstr q = MP_QSTR_ + 1; q < nqstr; ++q) {
size_t d_len; size_t d_len;
const char *d_str = (const char*)qstr_data(q, &d_len); const char *d_str = (const char*)qstr_data(q, &d_len);
if (s_len <= d_len && strncmp(s_start, d_str, s_len) == 0) { if (s_len <= d_len && strncmp(s_start, d_str, s_len) == 0) {