diff options
Diffstat (limited to 'Python/suggestions.c')
-rw-r--r-- | Python/suggestions.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Python/suggestions.c b/Python/suggestions.c index 2e76551..3dfcbfe 100644 --- a/Python/suggestions.c +++ b/Python/suggestions.c @@ -3,6 +3,7 @@ #include "pycore_frame.h" #include "pycore_pyerrors.h" +#include "pycore_code.h" // _PyCode_GetVarnames() #define MAX_CANDIDATE_ITEMS 750 #define MAX_STRING_SIZE 40 @@ -210,8 +211,13 @@ offer_suggestions_for_name_error(PyNameErrorObject *exc) PyFrameObject *frame = traceback->tb_frame; assert(frame != NULL); PyCodeObject *code = PyFrame_GetCode(frame); - assert(code != NULL && code->co_varnames != NULL); - PyObject *dir = PySequence_List(code->co_varnames); + assert(code != NULL && code->co_localsplusnames != NULL); + PyObject *varnames = _PyCode_GetVarnames(code); + if (varnames == NULL) { + return NULL; + } + PyObject *dir = PySequence_List(varnames); + Py_DECREF(varnames); Py_DECREF(code); if (dir == NULL) { return NULL; |