diff options
Diffstat (limited to 'String.c')
| -rw-r--r-- | String.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -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; } |
