diff --git a/src/fmt/pl.c b/src/fmt/pl.c index 47057236f..817250ed4 100644 --- a/src/fmt/pl.c +++ b/src/fmt/pl.c @@ -787,13 +787,14 @@ int pl_ltrim(struct pl *pl) if (!pl_isset(pl)) return EINVAL; - while (!re_regex(pl->p, 1, "[ \t\r\n]")) { - ++pl->p; - --pl->l; - if (!pl->l) - return EINVAL; + size_t i = 0; + while (i <= pl->l && isspace((unsigned char)pl->p[i])) { + ++i; } + pl->p += i; + pl->l -= i; + return 0; } @@ -810,10 +811,8 @@ int pl_rtrim(struct pl *pl) if (!pl_isset(pl)) return EINVAL; - while (!re_regex(pl->p + pl->l - 1, 1, "[ \t\r\n]")) { + while (pl->l > 0 && isspace((unsigned char)pl->p[pl->l - 1])) { --pl->l; - if (!pl->l) - return EINVAL; } return 0; @@ -832,7 +831,8 @@ int pl_trim(struct pl *pl) int err; err = pl_ltrim(pl); - err |= pl_rtrim(pl); + if (pl_isset(pl)) + err |= pl_rtrim(pl); return err; }