diff --git a/src/string.c b/src/string.c index 728b885..9ae0f08 100644 --- a/src/string.c +++ b/src/string.c @@ -37,6 +37,7 @@ __null_check(const String* ptr, err_t* status) if (ptr == nullptr) { status->flags |= ERR_STR_NULL; + return status->flags; } if (ptr->data == nullptr) { @@ -431,7 +432,7 @@ vec_string_back(const vec_string* ptr, err_t* err) err->flags |= status.flags; return (String)STR_INIT; } - if (vec_string_at(ptr, 0, err) == nullptr) + if (vec_string_at(ptr, ptr->size - 1, err) == nullptr) { err->flags |= ERR_OUT_OF_BOUNDS; return (String)STR_INIT; @@ -717,7 +718,10 @@ vec_string_assign(vec_string* ptr, const vec_string* iterator, err->flags |= ERR_OUT_OF_BOUNDS; return; } - vec_string_erase(ptr, 0, ptr->size, &status); + if (ptr->size > 0) + { + vec_string_erase(ptr, 0, ptr->size, &status); + } if (status.flags != 0) { __origin_override(err, "ASSIGN"); @@ -767,8 +771,11 @@ vec_string_assign(vec_string* ptr, const size_t amount, const String val, err->flags |= ERR_SIZE_ZERO; return; } - vec_string_erase(ptr, vec_string_begin(ptr, &status), - vec_string_end(ptr, &status) + 1, &status); + if (ptr->size > 0) + { + vec_string_erase(ptr, vec_string_begin(ptr, &status), + vec_string_end(ptr, &status) + 1, &status); + } if (status.flags != 0) { __origin_override(err, "ASSIGN");