aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Array.c4
-rw-r--r--String.c13
2 files changed, 11 insertions, 6 deletions
diff --git a/Array.c b/Array.c
index 60dc82d..6be8c1a 100644
--- a/Array.c
+++ b/Array.c
@@ -62,7 +62,9 @@ A_push(Array arr, void *value) {
if (am->count >= am->length) {
if (!B_resizeable(am->b, arr))
return R_OutOfBounds;
- RETURN_NOTOK(B_resize(am->b, sizeof(*am) + am->element_size * (am->length <<= 1)));
+
+ RETURN_NOTOK(B_resize(am->b, sizeof(*am) + am->element_size * (am->length << 1)));
+ am->length <<= 1;
}
memcpy(arr + am->count++ * am->element_size, value, am->element_size);
diff --git a/String.c b/String.c
index c0d454d..dd34d34 100644
--- a/String.c
+++ b/String.c
@@ -95,9 +95,11 @@ S_append(String s, const char* str) {
if (!B_resizeable(sm->b, s))
return R_OutOfBounds;
- RETURN_NOTOK(B_resize(sm->b, sizeof(*sm) + (sm->length += strlen(str)) + 1));
+ usize strlength = strlen(str);
+ RETURN_NOTOK(B_resize(sm->b, sizeof(*sm) + (sm->length + strlength) + 1));
strcat(s, str);
+ sm->length += strlength;
return R_Ok;
}
@@ -109,18 +111,19 @@ S_prepend(String s, const char* str) {
struct StringMeta* sm = S_metadata(s);
- usize strlength = strlen(str);
if (!B_resizeable(sm->b, s))
return R_OutOfBounds;
- usize orig_len = sm->length;
- RETURN_NOTOK(B_resize(sm->b, sizeof(*sm) + (sm->length += strlength) + 1));
+ usize strlength = strlen(str);
+ RETURN_NOTOK(B_resize(sm->b, sizeof(*sm) + (sm->length + strlength) + 1));
- for (usize i = orig_len; i > 0; --i)
+ for (usize i = sm->length; i > 0; --i)
s[i - 1 + strlength] = s[i - 1];
for (usize i = 0; i < strlength; ++i)
s[i] = str[i];
+ sm->length += strlength;
+
return R_Ok;
}