summaryrefslogtreecommitdiff
path: root/extmod/machine_signal.c
diff options
context:
space:
mode:
Diffstat (limited to 'extmod/machine_signal.c')
-rw-r--r--extmod/machine_signal.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/extmod/machine_signal.c b/extmod/machine_signal.c
index 78d0c3fee..3f9f5af94 100644
--- a/extmod/machine_signal.c
+++ b/extmod/machine_signal.c
@@ -58,7 +58,7 @@ STATIC mp_obj_t signal_make_new(const mp_obj_type_t *type, size_t n_args, size_t
// If first argument isn't a Pin-like object, we filter out "invert"
// from keyword arguments and pass them all to the exported Pin
// constructor to create one.
- mp_obj_t pin_args[n_args + n_kw * 2];
+ mp_obj_t *pin_args = mp_local_alloc((n_args + n_kw * 2) * sizeof(mp_obj_t));
memcpy(pin_args, args, n_args * sizeof(mp_obj_t));
const mp_obj_t *src = args + n_args;
mp_obj_t *dst = pin_args + n_args;
@@ -88,6 +88,8 @@ STATIC mp_obj_t signal_make_new(const mp_obj_type_t *type, size_t n_args, size_t
// will just ignore it as set a concrete type. If not, we'd need
// to expose port's "default" pin type too.
pin = MICROPY_PY_MACHINE_PIN_MAKE_NEW(NULL, n_args, n_kw, pin_args);
+
+ mp_local_free(pin_args);
}
else
#endif