diff --git a/tstring.c b/tstring.c index 238f98c..faa34d7 100644 --- a/tstring.c +++ b/tstring.c @@ -1,4 +1,5 @@ #include "tstring.h" +#include int GetGlyphByteWidth(const char* glyph); void TStringCopyGlyph(const char* glyph, int length, TString* string); @@ -13,8 +14,22 @@ struct __tstring { TString* TStringCreate(void) { TString* string = malloc(sizeof(TString)); + if (!string) { + fprintf(stderr, "Failed to malloc space for TString. %s.\n", strerror(errno)); + + return NULL; + } + string->Characters = calloc(DEFAULT_TSTRING_BYTE_BUFFER, sizeof(char)); + if (!string->Characters) { + fprintf(stderr, "Failed to malloc space for TString character array. %s.\n", strerror(errno)); + + free(string); + + return NULL; + } + string->Capacity = DEFAULT_TSTRING_BYTE_BUFFER; string->ByteCount = 0; string->Length = 0; @@ -29,6 +44,8 @@ int TStringLength(const TString* string) { } void TStringAppendText(const char* text, TString* string) { + if (!text || !string) return; + int totalLength = strlen(text); int glyphLength = GetGlyphByteWidth(text); @@ -94,12 +111,7 @@ void TStringFree(TString* string) { } int GetGlyphByteWidth(const char* glyph) { - // printf("Bytes for '%s': ", glyph); - - // for(size_t i = 0; i < strlen(glyph); i++) { - // printf("%02X ", 0xFF & glyph[i]); - // } - // printf("\n"); + if (!glyph) return -1; if ((*glyph & 0x80) == 0) { return 1; @@ -118,6 +130,7 @@ int GetGlyphByteWidth(const char* glyph) { } void TStringCopyGlyph(const char* glyph, int length, TString* string) { + if (!glyph || !string) return; if (length < 1) return; if (string->ByteCount + length > string->Capacity) {