commit 8969fb6ad55d4ae4ac168b22c272a7228e5f263b
parent 5bd7e855a68e745900e617aa9a30f2f5cfb99135
Author: Santtu Lakkala <inz@inz.fi>
Date: Fri, 31 Jan 2025 13:59:28 +0200
Use standard functions
Diffstat:
M | xs.h | | | 15 | ++++----------- |
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/xs.h b/xs.h
@@ -399,17 +399,14 @@ xs_val *xs_expand(xs_val *data, int offset, int size)
/* opens a hole in data */
{
xstype type = xs_type(data);
- int sz = xs_size(data);
+ int sz = xs_size(data) + size;
int n;
- sz += size;
-
/* open room */
data = xs_realloc(data, _xs_blk_size(sz));
/* move up the rest of the data */
- for (n = sz - 1; n >= offset + size; n--)
- data[n] = data[n - size];
+ memmove(data + offset + size, data + offset, sz - offset - size);
if (type == XSTYPE_LIST ||
type == XSTYPE_DICT ||
@@ -424,7 +421,6 @@ xs_val *xs_collapse(xs_val *data, int offset, int size)
/* shrinks data */
{
int sz = xs_size(data);
- int n;
/* don't try to delete beyond the limit */
if (offset + size > sz)
@@ -433,8 +429,7 @@ xs_val *xs_collapse(xs_val *data, int offset, int size)
/* shrink total size */
sz -= size;
- for (n = offset; n < sz; n++)
- data[n] = data[n + size];
+ memmove(data + offset, data + offset + size, sz - offset);
if (xs_type(data) == XSTYPE_LIST ||
xs_type(data) == XSTYPE_DICT ||
@@ -648,9 +643,7 @@ xs_str *xs_crop_i(xs_str *str, int start, int end)
xs_str *xs_lstrip_chars_i(xs_str *str, const char *chars)
/* strips all chars from the start of str */
{
- int n;
-
- for (n = 0; str[n] && strchr(chars, str[n]); n++);
+ int n = strspn(str, chars);;
if (n)
str = xs_collapse(str, 0, n);