snac2

Fork of https://codeberg.org/grunfink/snac2
git clone https://git.inz.fi/snac2
Log | Files | Refs | README | LICENSE

commit 8969fb6ad55d4ae4ac168b22c272a7228e5f263b
parent 5bd7e855a68e745900e617aa9a30f2f5cfb99135
Author: Santtu Lakkala <inz@inz.fi>
Date:   Fri, 31 Jan 2025 13:59:28 +0200

Use standard functions

Diffstat:
Mxs.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);