Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
On my esp32-3248S035C, after entering the IP address, I was seeing a segfault at lv_mem_free at .pio/libdeps/esp32-3248S035C/lvgl/src/misc/lv_mem.c:179 allocate_btn_areas_and_controls at .pio/libdeps/esp32-3248S035C/lvgl/src/widgets/lv_btnmatrix.c:877 lv_btnmatrix_set_map at .pio/libdeps/esp32-3248S035C/lvgl/src/widgets/lv_btnmatrix.c:94 lv_keyboard_update_map at .pio/libdeps/esp32-3248S035C/lvgl/src/extra/widgets/keyboard/lv_keyboard.c:397 lv_keyboard_set_mode at .pio/libdeps/esp32-3248S035C/lvgl/src/extra/widgets/keyboard/lv_keyboard.c:185 keyboard_event_ip_entry(_lv_event_t*) at src/ui/ip_setup.cpp:81 event_send_core at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:467 lv_event_send at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:63 lv_keyboard_def_event_cb at .pio/libdeps/esp32-3248S035C/lvgl/src/extra/widgets/keyboard/lv_keyboard.c:308 event_send_core at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:467 lv_event_send at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:63 lv_btnmatrix_event at .pio/libdeps/esp32-3248S035C/lvgl/src/widgets/lv_btnmatrix.c:520 lv_obj_event_base at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:91 (discriminator 1) event_send_core at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:458 lv_event_send at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_event.c:63 indev_proc_release at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_indev.c:970 indev_button_proc at .pio/libdeps/esp32-3248S035C/lvgl/src/core/lv_indev.c:808 lv_timer_exec at .pio/libdeps/esp32-3248S035C/lvgl/src/misc/lv_timer.c:313 set_screen_brightness() at src/core/lv_setup.cpp:191 ip_init() at src/ui/ip_setup.cpp:239 setup() at src/main.cpp:28 loopTask(void*) at /home/user/etc/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:41 This seems to be due to a free-after-free. The solution here is to potentially change the keymap before running the rest of the logic, because the later logic may tear down the context. This change also only changes the keyboard mode on focus change, to avoid running this code on the many un-related events that this handler gets called for.
- Loading branch information