diff --git a/src/stdlib/builtin/lv_string_builtin.c b/src/stdlib/builtin/lv_string_builtin.c index 62742a39f8..bc4551bbb8 100644 --- a/src/stdlib/builtin/lv_string_builtin.c +++ b/src/stdlib/builtin/lv_string_builtin.c @@ -229,12 +229,8 @@ char * lv_strdup(const char * src) char * lv_strcat(char * dst, const char * src) { - char * tmp = dst; - while(*dst != '\0') { - dst++; - } - lv_strcpy(dst, src); - return tmp; + lv_strcpy(dst + lv_strlen(dst), src); + return dst; } char * lv_strncat(char * dst, const char * src, size_t src_len) diff --git a/src/stdlib/rtthread/lv_string_rtthread.c b/src/stdlib/rtthread/lv_string_rtthread.c index 68ea8d9bc7..c2a12a1176 100644 --- a/src/stdlib/rtthread/lv_string_rtthread.c +++ b/src/stdlib/rtthread/lv_string_rtthread.c @@ -87,7 +87,10 @@ char * lv_strdup(const char * src) char * lv_strcat(char * dst, const char * src) { - return strcat(dst, src); + /*Since RT-thread does not have rt_strcat, + the following code is used instead.*/ + lv_strcpy(dst + lv_strlen(dst), src); + return dst; } char * lv_strncat(char * dst, const char * src, size_t src_len)