From e72589c6d4c3850a4ce8c79fc77359ce4793a82e Mon Sep 17 00:00:00 2001 From: Amir Gonnen Date: Fri, 8 Feb 2019 00:03:16 +0200 Subject: [PATCH 1/2] Prevent crash when lv_init is called more than once. After the first call, it will do nothing. --- lv_core/lv_obj.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lv_core/lv_obj.c b/lv_core/lv_obj.c index a58ead8c2..e527af285 100644 --- a/lv_core/lv_obj.c +++ b/lv_core/lv_obj.c @@ -49,6 +49,8 @@ static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param); * STATIC VARIABLES **********************/ +static bool _lv_initialized = false; + /********************** * MACROS **********************/ @@ -62,6 +64,9 @@ static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param); */ void lv_init(void) { + if (_lv_initialized) return; + _lv_initialized = true; + LV_GC_ROOT(_lv_def_scr) = NULL; LV_GC_ROOT(_lv_act_scr) = NULL; LV_GC_ROOT(_lv_top_layer) = NULL; From 1c67d07dc370d1c30a9417d241548bf57666c482 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Thu, 7 Feb 2019 17:57:06 -0500 Subject: [PATCH 2/2] Move setting of _lv_initialized and correct formatting Set _lv_initialized at the end of lv_init. Correct formatting of "if" statement to be consistent with the rest of the library. --- lv_core/lv_obj.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lv_core/lv_obj.c b/lv_core/lv_obj.c index e527af285..6924ce158 100644 --- a/lv_core/lv_obj.c +++ b/lv_core/lv_obj.c @@ -64,9 +64,10 @@ static bool _lv_initialized = false; */ void lv_init(void) { - if (_lv_initialized) return; - _lv_initialized = true; - + /* Do nothing if already initialized */ + if (_lv_initialized) + return; + LV_GC_ROOT(_lv_def_scr) = NULL; LV_GC_ROOT(_lv_act_scr) = NULL; LV_GC_ROOT(_lv_top_layer) = NULL; @@ -116,7 +117,7 @@ void lv_init(void) lv_indev_init(); #endif - + _lv_initialized = true; LV_LOG_INFO("lv_init ready"); }