diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-10 14:27:31 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-10 14:27:31 +0000 |
commit | 58ba4c3b4c12e9bf6b8731fd26e0c9cac527122f (patch) | |
tree | a0fce39198f5a192e780016ef3608813a351573a /py/objexcept.c | |
parent | ffa9bddfc4006aebb2689826f700ea167f4de54d (diff) | |
download | micropython-58ba4c3b4c12e9bf6b8731fd26e0c9cac527122f.tar.gz micropython-58ba4c3b4c12e9bf6b8731fd26e0c9cac527122f.zip |
py: Check explicitly for memory allocation failure in parser.
Previously, a failed malloc/realloc would throw an exception, which was
not caught. I think it's better to keep the parser free from NLR
(exception throwing), hence this patch.
Diffstat (limited to 'py/objexcept.c')
-rw-r--r-- | py/objexcept.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/py/objexcept.c b/py/objexcept.c index 1ef3e31dc6..781a00405c 100644 --- a/py/objexcept.c +++ b/py/objexcept.c @@ -54,7 +54,7 @@ STATIC mp_obj_t mp_obj_exception_make_new(mp_obj_t type_in, uint n_args, uint n_ nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_TypeError, "%s does not take keyword arguments", mp_obj_get_type_str(type_in))); } - mp_obj_exception_t *o = m_malloc_maybe(sizeof(mp_obj_exception_t) + n_args * sizeof(mp_obj_t)); + mp_obj_exception_t *o = m_new_obj_var_maybe(mp_obj_exception_t, mp_obj_t, n_args); if (o == NULL) { // Couldn't allocate heap memory; use local data instead. o = &mp_emergency_exception_obj; @@ -205,7 +205,7 @@ mp_obj_t mp_obj_new_exception_msg_varg(const mp_obj_type_t *exc_type, const char assert(exc_type->make_new == mp_obj_exception_make_new); // make exception object - mp_obj_exception_t *o = m_malloc_maybe(sizeof(mp_obj_exception_t) + 1 * sizeof(mp_obj_t)); + mp_obj_exception_t *o = m_new_obj_var_maybe(mp_obj_exception_t, mp_obj_t, 1); if (o == NULL) { // Couldn't allocate heap memory; use local data instead. // Unfortunately, we won't be able to format the string... |