diff --git a/src/layouts/flex/lv_flex.c b/src/layouts/flex/lv_flex.c index b9603c1e7d..5a7b1e8048 100644 --- a/src/layouts/flex/lv_flex.c +++ b/src/layouts/flex/lv_flex.c @@ -116,7 +116,8 @@ void lv_obj_set_flex_align(lv_obj_t * obj, lv_flex_align_t main_place, lv_flex_a void lv_obj_set_flex_grow(lv_obj_t * obj, uint8_t grow) { lv_obj_set_style_flex_grow(obj, grow, 0); - lv_obj_mark_layout_as_dirty(lv_obj_get_parent(obj)); + lv_obj_t * parent = lv_obj_get_parent(obj); + if(parent) lv_obj_mark_layout_as_dirty(parent); } /********************** diff --git a/tests/src/test_cases/test_align_flex.c b/tests/src/test_cases/test_align_flex.c index a1900993a1..35ebc7062d 100644 --- a/tests/src/test_cases/test_align_flex.c +++ b/tests/src/test_cases/test_align_flex.c @@ -191,4 +191,11 @@ void test_flex_use_rtl(void) TEST_ASSERT_EQUAL_SCREENSHOT("flex_use_rtl.png"); } + +void test_flex_grow_on_screen_should_not_crash(void) +{ + lv_obj_set_flex_grow(lv_screen_active(), 1); + lv_refr_now(NULL); +} + #endif