--- lbbs/src/str_process.c 2025/10/18 12:06:10 1.21 +++ lbbs/src/str_process.c 2025/10/31 06:04:17 1.22 @@ -17,6 +17,7 @@ #include "common.h" #include "log.h" #include "str_process.h" +#include #include #include @@ -37,11 +38,22 @@ int str_length(const char *str, int skip if (skip_ctrl_seq && c == '\033' && str[i + 1] == '[') // Skip control sequence { - i += 2; - while (str[i] != '\0' && str[i] != 'm') + for (i = i + 2; isdigit(str[i]) || str[i] == ';' || str[i] == '?'; i++) + ; + + if (str[i] == 'm') // valid + { + // skip + } + else if (isalpha(str[i])) { - i++; + // unsupported ANSI CSI command } + else + { + i--; + } + continue; }