diff options
| author | Bernhard Boser <boser@berkeley.edu> | 2021-02-15 10:05:57 -0800 |
|---|---|---|
| committer | Bernhard Boser <boser@berkeley.edu> | 2021-02-15 10:05:57 -0800 |
| commit | f8f59598c76653a47da101ed1044dfd35d2cfacc (patch) | |
| tree | 2c58877af128ee3bf0add651c43d091973ba2345 /py | |
| parent | 766e79ad3dde29042c1a184b8ef0f8b57995adb6 (diff) | |
memoryview is valid argument to exec
Diffstat (limited to 'py')
| -rw-r--r-- | py/builtinevex.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/py/builtinevex.c b/py/builtinevex.c index ade12d39d..cff57c413 100644 --- a/py/builtinevex.c +++ b/py/builtinevex.c @@ -132,17 +132,18 @@ STATIC mp_obj_t eval_exec_helper(size_t n_args, const mp_obj_t *args, mp_parse_i } #endif - size_t str_len; - const char *str = mp_obj_str_get_data(args[0], &str_len); + // Extract the source code. + mp_buffer_info_t bufinfo; + mp_get_buffer_raise(args[0], &bufinfo, MP_BUFFER_READ); // create the lexer // MP_PARSE_SINGLE_INPUT is used to indicate a file input mp_lexer_t *lex; if (MICROPY_PY_BUILTINS_EXECFILE && parse_input_kind == MP_PARSE_SINGLE_INPUT) { - lex = mp_lexer_new_from_file(str); + lex = mp_lexer_new_from_file(bufinfo.buf); parse_input_kind = MP_PARSE_FILE_INPUT; } else { - lex = mp_lexer_new_from_str_len(MP_QSTR__lt_string_gt_, str, str_len, 0); + lex = mp_lexer_new_from_str_len(MP_QSTR__lt_string_gt_, bufinfo.buf, bufinfo.len, 0); } return mp_parse_compile_execute(lex, parse_input_kind, globals, locals); |
