Skip to content

Commit 0bd03de

Browse files
committed
esp32/main: Fix mp_deinit order.
Move `mp_deinit` to be called before `gc_sweep_all` to prevent `mp_deinit` from double freeing memory if `MICROPY_PORT_DEINIT_FUNC` is defined and the function tries to free memory already freed by `gc_sweep_all` Signed-off-by: Carlosgg <[email protected]>
1 parent c0111e6 commit 0bd03de

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

ports/esp32/main.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ void mp_task(void *pvParameter) {
187187
mp_usbd_deinit();
188188
#endif
189189

190+
#ifdef MICROPY_PORT_DEINIT_FUNC
191+
mp_deinit();
192+
#endif
193+
190194
gc_sweep_all();
191195

192196
// Free any native code pointers that point to iRAM.
@@ -203,7 +207,10 @@ void mp_task(void *pvParameter) {
203207
socket_events_deinit();
204208
#endif
205209

210+
#ifndef MICROPY_PORT_DEINIT_FUNC
206211
mp_deinit();
212+
#endif
213+
207214
fflush(stdout);
208215
goto soft_reset;
209216
}

0 commit comments

Comments
 (0)