diff options
| author | Shell <[email protected]> | 2024-05-21 08:56:35 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-05-21 08:56:35 +0800 |
| commit | e82c53559b6e16acb5bdc9c9c9d51c8ddf84a86d (patch) | |
| tree | 600671847e6af19422e22ec407e8cab46f138699 /src/object.c | |
| parent | 2f559906d6202c27142237ab4b1d893034a5b7c3 (diff) | |
[utest] add device find (#8959)
* [utest] add device find
Signed-off-by: Shell <[email protected]>
* fixup: add test
* fixup: ptr aliasing
* quality: meaning parameter
---------
Signed-off-by: Shell <[email protected]>
Diffstat (limited to 'src/object.c')
| -rw-r--r-- | src/object.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/object.c b/src/object.c index ae62be1fa3..5c110f7b70 100644 --- a/src/object.c +++ b/src/object.c @@ -625,12 +625,19 @@ rt_err_t rt_object_for_each(rt_uint8_t type, rt_object_iter_t iter, void *data) return RT_EOK; } +struct _obj_find_param +{ + const char *match_name; + rt_object_t matched_obj; +}; + static rt_err_t _match_name(struct rt_object *obj, void *data) { - const char *name = *(const char **)data; + struct _obj_find_param *param = data; + const char *name = param->match_name; if (rt_strncmp(obj->name, name, RT_NAME_MAX) == 0) { - *(rt_object_t *)data = obj; + param->matched_obj = obj; /* notify an early break of loop, but not on error */ return 1; @@ -654,7 +661,11 @@ static rt_err_t _match_name(struct rt_object *obj, void *data) */ rt_object_t rt_object_find(const char *name, rt_uint8_t type) { - void *data = (void *)name; + struct _obj_find_param param = + { + .match_name = name, + .matched_obj = RT_NULL, + }; /* parameter check */ if (name == RT_NULL) return RT_NULL; @@ -662,13 +673,8 @@ rt_object_t rt_object_find(const char *name, rt_uint8_t type) /* which is invoke in interrupt status */ RT_DEBUG_NOT_IN_INTERRUPT; - rt_object_for_each(type, _match_name, &data); - if (data != name) - { - return data; - } - - return RT_NULL; + rt_object_for_each(type, _match_name, ¶m); + return param.matched_obj; } /** |
