From 21420b13c011ca5a89a224ff7108b98fd3aeafd9 Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 14 Mar 2017 11:33:06 +1100 Subject: [PATCH] examples/embedding: Place lexer constructor within NLR handler block. The lexer constructor may now raise an exception and it needs to be caught. --- examples/embedding/hello-embed.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/embedding/hello-embed.c b/examples/embedding/hello-embed.c index 194930518..e3a484783 100644 --- a/examples/embedding/hello-embed.c +++ b/examples/embedding/hello-embed.c @@ -35,9 +35,10 @@ static char heap[16384]; -mp_obj_t execute_from_lexer(mp_lexer_t *lex) { +mp_obj_t execute_from_str(const char *str) { nlr_buf_t nlr; if (nlr_push(&nlr) == 0) { + mp_lexer_t *lex = mp_lexer_new_from_str_len(0/*MP_QSTR_*/, str, strlen(str), false); mp_parse_tree_t pt = mp_parse(lex, MP_PARSE_FILE_INPUT); mp_obj_t module_fun = mp_compile(&pt, lex->source_name, MP_EMIT_OPT_NONE, false); mp_call_function_0(module_fun); @@ -58,8 +59,7 @@ int main() { mp_init(); const char str[] = "print('Hello world of easy embedding!')"; - mp_lexer_t *lex = mp_lexer_new_from_str_len(0/*MP_QSTR_*/, str, strlen(str), false); - if (execute_from_lexer(lex)) { + if (execute_from_str(str)) { printf("Error\n"); } }