Fix SIGSEV when running "a"()

rt_call_function_n_kw did check for integers but not for strings
being called. Added a check so running "a"() won't SIGSEV but
throw an exception.
This commit is contained in:
Markus Siemens 2014-01-31 22:16:23 +01:00
parent 7ee8e46878
commit 2c2a124e16

View File

@ -739,6 +739,8 @@ mp_obj_t rt_call_function_n_kw(mp_obj_t fun_in, uint n_args, uint n_kw, const mp
if (MP_OBJ_IS_SMALL_INT(fun_in)) { if (MP_OBJ_IS_SMALL_INT(fun_in)) {
nlr_jump(mp_obj_new_exception_msg(MP_QSTR_TypeError, "'int' object is not callable")); nlr_jump(mp_obj_new_exception_msg(MP_QSTR_TypeError, "'int' object is not callable"));
} else if(MP_OBJ_IS_STR(fun_in)) {
nlr_jump(mp_obj_new_exception_msg(MP_QSTR_TypeError, "'str' object is not callable"));
} else { } else {
mp_obj_base_t *fun = fun_in; mp_obj_base_t *fun = fun_in;
if (fun->type->call != NULL) { if (fun->type->call != NULL) {