diff --git a/xs.h b/xs.h index 666f536..68236a1 100644 --- a/xs.h +++ b/xs.h @@ -459,13 +459,21 @@ d_char *xs_crop(d_char *str, int start, int end) d_char *xs_strip_chars(d_char *str, const char *chars) /* strips the string of chars from the start and the end */ { - int s, e; + int n; - for (s = 0; strchr(chars, str[s]); s++); - for (e = strlen(str); e > 0 && strchr(chars, str[e - 1]); e--); + /* strip first from the end */ + for (n = strlen(str); n > 0 && strchr(chars, str[n - 1]); n--); + str[n] = '\0'; - str[e] = '\0'; - return xs_collapse(str, 0, s); + if (str[0]) { + /* now strip from the beginning */ + for (n = 0; str[n] && strchr(chars, str[n]); n++); + + if (n) + str = xs_collapse(str, 0, n); + } + + return str; } diff --git a/xs_version.h b/xs_version.h index c58ea4e..2691aed 100644 --- a/xs_version.h +++ b/xs_version.h @@ -1 +1 @@ -/* 52f1885c0439e886094a9506e6b06f3d657fe8d9 */ +/* e8f087f6b185939256227ea21b69f5f16f25a2dd */