diff options
Diffstat (limited to 'unix/main.c')
-rw-r--r-- | unix/main.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/unix/main.c b/unix/main.c index 177c76b53c..f00bf3d33a 100644 --- a/unix/main.c +++ b/unix/main.c @@ -130,10 +130,11 @@ STATIC int execute_from_lexer(mp_lexer_t *lex, mp_parse_input_kind_t input_kind, // check for SystemExit mp_obj_t exc = (mp_obj_t)nlr.ret_val; if (mp_obj_is_subclass_fast(mp_obj_get_type(exc), &mp_type_SystemExit)) { + // None is an exit value of 0; an int is its value; anything else is 1 mp_obj_t exit_val = mp_obj_exception_get_value(exc); - mp_int_t val; - if (!mp_obj_get_int_maybe(exit_val, &val)) { - val = 0; + mp_int_t val = 0; + if (exit_val != mp_const_none && !mp_obj_get_int_maybe(exit_val, &val)) { + val = 1; } exit(val); } @@ -406,15 +407,6 @@ int main(int argc, char **argv) { return ret; } -STATIC mp_obj_t mp_sys_exit(uint n_args, const mp_obj_t *args) { - int rc = 0; - if (n_args > 0) { - rc = mp_obj_get_int(args[0]); - } - nlr_raise(mp_obj_new_exception_arg1(&mp_type_SystemExit, mp_obj_new_int(rc))); -} -MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_sys_exit_obj, 0, 1, mp_sys_exit); - uint mp_import_stat(const char *path) { struct stat st; if (stat(path, &st) == 0) { |