diff --git a/src/String.c b/src/String.c index d597ec8..2c53d62 100644 --- a/src/String.c +++ b/src/String.c @@ -3,8 +3,13 @@ String * String_new(const char * s) { - String * new_st = (String *)malloc(sizeof(String)); size_t size = strlen(s); + return String_new_size(s, size); +} + +String * String_new_size(const char * s, size_t size) +{ + String * new_st = (String *)malloc(sizeof(String)); char * smem = (char *)malloc(size + 1u); memcpy(smem, s, size); smem[size] = '\0'; diff --git a/src/String.h b/src/String.h index 921c56e..385e70c 100644 --- a/src/String.h +++ b/src/String.h @@ -10,6 +10,7 @@ typedef struct } String; String * String_new(const char * s); +String * String_new_size(const char * s, size_t size); String * String_plus(const String * st, const char * s); String * String_concat(String * st, const char * s); static inline char * String_cstr(const String * st) { return st->value; }