diff --git a/m-string.h b/m-string.h index 929c61a6..de4c61b3 100644 --- a/m-string.h +++ b/m-string.h @@ -280,8 +280,9 @@ string_cat(string_t v, const string_t v2) if (M_LIKELY (size > 0)) { stringi_fit2size(v, v->size + size + 1); assert (v2->ptr != NULL); - memcpy(&v->ptr[v->size], v2->ptr, size + 1); + memcpy(&v->ptr[v->size], v2->ptr, size); v->size += size; + v->ptr[v->size] = 0; } STRING_CONTRACT (v); } diff --git a/tests/test-mstring.c b/tests/test-mstring.c index 1a858f6c..9f0dc355 100644 --- a/tests/test-mstring.c +++ b/tests/test-mstring.c @@ -202,7 +202,10 @@ int main(void) string_swap (s1, s2); assert(string_equal_str_p (s1, "QWERTY")); assert(string_equal_str_p (s2, "AZERTY")); - + + string_cat(s1, s1); + assert (string_equal_str_p(s1, "QWERTYQWERTY")); + string_clear (s2); string_clear (s1); exit(0);