diff --git a/DtsodC/Autoarr/StringBuilder.c b/DtsodC/Autoarr/StringBuilder.c index 030fdb4..1eb729e 100644 --- a/DtsodC/Autoarr/StringBuilder.c +++ b/DtsodC/Autoarr/StringBuilder.c @@ -37,6 +37,7 @@ void StringBuilder_append_int64(StringBuilder* b, int64 a){ } string rev=string_reverse((string){buf,i}); StringBuilder_append_string(b,rev); + free(rev.ptr); } void StringBuilder_append_uint64(StringBuilder* b, uint64 a){ @@ -51,6 +52,7 @@ void StringBuilder_append_uint64(StringBuilder* b, uint64 a){ } string rev=string_reverse((string){buf,i}); StringBuilder_append_string(b,rev); + free(rev.ptr); } void StringBuilder_append_double(StringBuilder* b, double a){ diff --git a/DtsodC/DtsodParser/DtsodV24_deserialize.c b/DtsodC/DtsodParser/DtsodV24_deserialize.c index 7b84122..3a6f109 100644 --- a/DtsodC/DtsodParser/DtsodV24_deserialize.c +++ b/DtsodC/DtsodParser/DtsodV24_deserialize.c @@ -86,7 +86,11 @@ Hashtable* __deserialize(char** _text, bool calledRecursively){ Autoarr_remove(b); StringBuilder_append_char(b,c); } - else return StringBuilder_build(b); + else { + char* str=StringBuilder_build(b); + Autoarr_clear(b); + return str; + } } else { prevIsBackslash= c=='\\' && !prevIsBackslash; diff --git a/DtsodC/DtsodParser/DtsodV24_serialize.c b/DtsodC/DtsodParser/DtsodV24_serialize.c index 759d941..eb71929 100644 --- a/DtsodC/DtsodParser/DtsodV24_serialize.c +++ b/DtsodC/DtsodParser/DtsodV24_serialize.c @@ -84,5 +84,7 @@ void __serialize(StringBuilder* b, uint8 tabs, Hashtable* dtsod){ char* DtsodV24_serialize(Hashtable* dtsod){ StringBuilder b=StringBuilder_create(STRB_BC,STRB_BL); __serialize(&b,0,dtsod); - return StringBuilder_build(&b); + char* str=StringBuilder_build(&b); + Autoarr_clear((&b)); + return str; } diff --git a/DtsodC/Hashtable/Hashtable.c b/DtsodC/Hashtable/Hashtable.c index ac391bb..393d0e8 100644 --- a/DtsodC/Hashtable/Hashtable.c +++ b/DtsodC/Hashtable/Hashtable.c @@ -70,7 +70,7 @@ Unitype* Hashtable_getptr(Hashtable* ht, char* key){ uint32 arlen=Autoarr_length(ar); for(uint32 i=0;ikey)) return &p->value; + if(cptr_compare(key,p->key)) return &p->value; } return NULL; } @@ -80,7 +80,7 @@ Unitype Hashtable_get(Hashtable* ht, char* key){ uint32 arlen=Autoarr_length(ar); for(uint32 i=0;i0) dst[len]=src[len]; @@ -17,7 +17,7 @@ char* charbuf_copy(char* src){ } //compares two char buffers, NullPtr-friendly -bool charbuf_compare(char* key0, char* key1){ +bool cptr_compare(char* key0, char* key1){ if(!key0) return key1 ? false : true; if(!key1) return false; while(*key0&&*key1) @@ -49,7 +49,7 @@ char* string_cpToCharPtr(string str){ string string_cpFromCharPtr(char* cptr){ if(!cptr) return stringNull; string str; - str.length=mystrlen(cptr)-1; + str.length=cptr_length(cptr)-1; str.ptr=malloc(str.length); for(uint32 i=0;i