diff --git a/src/widgets/table/lv_table.c b/src/widgets/table/lv_table.c index a3a42581f..97a867884 100644 --- a/src/widgets/table/lv_table.c +++ b/src/widgets/table/lv_table.c @@ -218,7 +218,7 @@ void lv_table_set_row_count(lv_obj_t * obj, uint32_t row_cnt) uint32_t new_cell_cnt = table->col_cnt * table->row_cnt; uint32_t i; for(i = new_cell_cnt; i < old_cell_cnt; i++) { - if(table->cell_data[i]->user_data) { + if(table->cell_data[i] && table->cell_data[i]->user_data) { lv_free(table->cell_data[i]->user_data); table->cell_data[i]->user_data = NULL; } diff --git a/tests/src/test_cases/widgets/test_table.c b/tests/src/test_cases/widgets/test_table.c index 777a2d488..6b7d98135 100644 --- a/tests/src/test_cases/widgets/test_table.c +++ b/tests/src/test_cases/widgets/test_table.c @@ -17,6 +17,13 @@ void tearDown(void) lv_obj_clean(lv_screen_active()); } +void test_table_should_set_row_count_to_zero(void) +{ + lv_table_set_row_count(table, 0); + + TEST_ASSERT_EQUAL_UINT32(0, lv_table_get_row_count(table)); +} + void test_table_should_return_assigned_cell_value(void) { uint16_t row = 0;