diff --git a/dstr/src/dstr.c b/dstr/src/dstr.c index 03705ae..08a8ecb 100644 --- a/dstr/src/dstr.c +++ b/dstr/src/dstr.c @@ -105,7 +105,6 @@ void wapp_dstr_concat(String **dst, const char *src) { } u64 src_length = strlen(src); - if (src_length == 0) { return; } @@ -116,7 +115,7 @@ void wapp_dstr_concat(String **dst, const char *src) { memset(str, 0, new_length + 1); strncpy(str, (*dst)->buf, (*dst)->size); - strncat(str, src, src_length); + strncat(str, src, new_length + 1 - (*dst)->size); wapp_dstr_update(dst, str); } @@ -170,7 +169,7 @@ void wapp_dstr_print(const String *str) { return; } - printf("%s\n", str->buf); + printf("%.*s\n", (i32)str->size, str->buf); } i64 wapp_dstr_find(const String *str, const char *substr) { @@ -179,7 +178,6 @@ i64 wapp_dstr_find(const String *str, const char *substr) { } u64 substr_length = strlen(substr); - if (substr_length == 0 || substr_length > str->size) { return -1; } @@ -187,16 +185,15 @@ i64 wapp_dstr_find(const String *str, const char *substr) { char buf[substr_length + 1]; memset(buf, 0, substr_length + 1); + const char *s1; for (u64 i = 0; i < str->size; ++i) { - if (i + substr_length >= str->size) { + if (i + substr_length > str->size) { break; } - for (u64 j = 0; j < substr_length; ++j) { - buf[j] = str->buf[i + j]; - } + s1 = &(str->buf[i]); - if (strcmp(buf, substr) == 0) { + if (strncmp(s1, substr, substr_length) == 0) { return i; } }