From 3dcd2ef4b55210c3cbe397eb9094a8852e49fa8d Mon Sep 17 00:00:00 2001 From: Akos Vandra-Meyer Date: Mon, 8 Jun 2026 15:22:19 +0200 Subject: [PATCH] feat(obj/draw): add arg checks to public api functions (#10204) Co-authored-by: Claude Sonnet 4.6 --- src/core/lv_obj_draw.c | 12 ++++++++++-- src/core/lv_obj_tree.c | 3 --- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/core/lv_obj_draw.c b/src/core/lv_obj_draw.c index 075ad57cb9..da4567fda4 100644 --- a/src/core/lv_obj_draw.c +++ b/src/core/lv_obj_draw.c @@ -45,6 +45,7 @@ static void drop_shadow_init(const lv_obj_t * obj, lv_part_t part, lv_draw_dsc_b void lv_obj_init_draw_rect_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_rect_dsc_t * draw_dsc) { + LV_CHECK_OBJ(obj, MY_CLASS, return); LV_CHECK_ARG(draw_dsc != NULL, return); LV_PROFILER_DRAW_BEGIN; @@ -169,6 +170,7 @@ void lv_obj_init_draw_rect_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_rect_dsc_ void lv_obj_init_draw_label_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_label_dsc_t * draw_dsc) { + LV_CHECK_OBJ(obj, MY_CLASS, return); LV_CHECK_ARG(draw_dsc != NULL, return); LV_PROFILER_DRAW_BEGIN; @@ -212,6 +214,7 @@ void lv_obj_init_draw_label_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_label_ds void lv_obj_init_draw_image_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_image_dsc_t * draw_dsc) { + LV_CHECK_OBJ(obj, MY_CLASS, return); LV_CHECK_ARG(draw_dsc != NULL, return); LV_PROFILER_DRAW_BEGIN; @@ -256,6 +259,7 @@ void lv_obj_init_draw_image_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_image_ds void lv_obj_init_draw_line_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_line_dsc_t * draw_dsc) { + LV_CHECK_OBJ(obj, MY_CLASS, return); LV_CHECK_ARG(draw_dsc != NULL, return); LV_PROFILER_DRAW_BEGIN; @@ -301,6 +305,7 @@ void lv_obj_init_draw_line_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_line_dsc_ void lv_obj_init_draw_arc_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_arc_dsc_t * draw_dsc) { + LV_CHECK_OBJ(obj, MY_CLASS, return); LV_CHECK_ARG(draw_dsc != NULL, return); LV_PROFILER_DRAW_BEGIN; @@ -341,6 +346,7 @@ void lv_obj_init_draw_arc_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_arc_dsc_t void lv_obj_init_draw_blur_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_blur_dsc_t * draw_dsc) { + LV_CHECK_OBJ(obj, MY_CLASS, return); LV_CHECK_ARG(draw_dsc != NULL, return); LV_PROFILER_DRAW_BEGIN; @@ -361,6 +367,8 @@ void lv_obj_init_draw_blur_dsc(lv_obj_t * obj, lv_part_t part, lv_draw_blur_dsc_ int32_t lv_obj_calculate_ext_draw_size(lv_obj_t * obj, lv_part_t part) { + LV_CHECK_OBJ(obj, MY_CLASS, return 0); + LV_PROFILER_DRAW_BEGIN; int32_t s = 0; @@ -433,7 +441,7 @@ void lv_obj_refresh_ext_draw_size(lv_obj_t * obj) int32_t lv_obj_get_ext_draw_size(const lv_obj_t * obj) { - LV_CHECK_ARG(obj != NULL, return 0); + LV_CHECK_OBJ(obj, MY_CLASS, return 0); if(obj->spec_attr) return obj->spec_attr->ext_draw_size; else return 0; @@ -441,7 +449,7 @@ int32_t lv_obj_get_ext_draw_size(const lv_obj_t * obj) lv_layer_type_t lv_obj_get_layer_type(const lv_obj_t * obj) { - LV_CHECK_ARG(obj != NULL, return LV_LAYER_TYPE_NONE); + LV_CHECK_OBJ(obj, MY_CLASS, return LV_LAYER_TYPE_NONE); if(obj->spec_attr) return (lv_layer_type_t)obj->spec_attr->layer_type; else return LV_LAYER_TYPE_NONE; diff --git a/src/core/lv_obj_tree.c b/src/core/lv_obj_tree.c index 457f9afe93..0ba71178df 100644 --- a/src/core/lv_obj_tree.c +++ b/src/core/lv_obj_tree.c @@ -315,7 +315,6 @@ lv_display_t * lv_obj_get_display(const lv_obj_t * obj) lv_obj_t * lv_obj_get_parent(const lv_obj_t * obj) { - if(obj == NULL) return NULL; LV_CHECK_OBJ(obj, MY_CLASS, return 0); return obj->parent; @@ -651,8 +650,6 @@ void lv_obj_dump_tree(lv_obj_t * start_obj) static void lv_obj_delete_async_cb(void * obj) { - LV_CHECK_OBJ(obj, MY_CLASS, return); - lv_obj_delete(obj); }