@@ -82,12 +82,6 @@ STATIC void validate_timeout(mp_float_t timeout) {
82
82
83
83
STATIC mp_obj_t busio_uart_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * all_args ) {
84
84
#if CIRCUITPY_BUSIO_UART
85
- // Always initially allocate the UART object within the long-lived heap.
86
- // This is needed to avoid crashes with certain UART implementations which
87
- // cannot accomodate being moved after creation. (See
88
- // https://github.com/adafruit/circuitpython/issues/1056)
89
- busio_uart_obj_t * self = m_new_ll_obj_with_finaliser (busio_uart_obj_t );
90
- self -> base .type = & busio_uart_type ;
91
85
enum { ARG_tx , ARG_rx , ARG_baudrate , ARG_bits , ARG_parity , ARG_stop , ARG_timeout , ARG_receiver_buffer_size ,
92
86
ARG_rts , ARG_cts , ARG_rs485_dir ,ARG_rs485_invert };
93
87
static const mp_arg_t allowed_args [] = {
@@ -140,6 +134,13 @@ STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, si
140
134
141
135
const bool rs485_invert = args [ARG_rs485_invert ].u_bool ;
142
136
137
+ // Always initially allocate the UART object within the long-lived heap.
138
+ // This is needed to avoid crashes with certain UART implementations which
139
+ // cannot accomodate being moved after creation. (See
140
+ // https://github.com/adafruit/circuitpython/issues/1056)
141
+ busio_uart_obj_t * self = m_new_ll_obj_with_finaliser (busio_uart_obj_t );
142
+ self -> base .type = & busio_uart_type ;
143
+
143
144
common_hal_busio_uart_construct (self , tx , rx , rts , cts , rs485_dir , rs485_invert ,
144
145
args [ARG_baudrate ].u_int , bits , parity , stop , timeout ,
145
146
args [ARG_receiver_buffer_size ].u_int , NULL , false);
0 commit comments