From 501ab9cd56b636cfa0feb61488c31427e1a76866 Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Thu, 21 Apr 2022 18:34:05 +0300 Subject: [PATCH] i still have no idea where the bug is --- DtsodParser/DtsodV24_deserialize.c | 17 +++++++++-------- base/errors.h | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/DtsodParser/DtsodV24_deserialize.c b/DtsodParser/DtsodV24_deserialize.c index 7d1c179..911e7af 100644 --- a/DtsodParser/DtsodV24_deserialize.c +++ b/DtsodParser/DtsodV24_deserialize.c @@ -248,7 +248,7 @@ Maybe __ReadValue(DeserializeSharedData* shared, bool* readingList){ case '=': case ':': case '}': case '$': case '\'': - safethrow_wrongchar(c,;); + safethrow_wrongchar(c,Unitype_free(value)); break; case '#':; char _c=c; @@ -256,27 +256,28 @@ Maybe __ReadValue(DeserializeSharedData* shared, bool* readingList){ try(SkipComment(),_,;); if(valueStr.length!=0){ text=_text; - safethrow_wrongchar(_c,;); + safethrow_wrongchar(_c,Unitype_free(value)); } valueStr.ptr=text+1; // skips '\n' break; case '"': - if(valueStr.length!=0) safethrow_wrongchar(c,;); + if(valueStr.length!=0) safethrow_wrongchar(c,Unitype_free(value)); try(ReadString(),maybeString,;) value=maybeString.value; break; case '{': - if(valueStr.length!=0) safethrow_wrongchar(c,;); + if(valueStr.length!=0) safethrow_wrongchar(c,Unitype_free(value)); ++text; // skips '{' - try(__deserialize(&text,true), val,;) + try(__deserialize(&text,true), val,Unitype_free(value)) value=val.value; break; case '[': - if(valueStr.length!=0) safethrow_wrongchar(c,;); - try(ReadList(),maybeList,;) + if(valueStr.length!=0) safethrow_wrongchar(c,Unitype_free(value)); + try(ReadList(),maybeList,Unitype_free(value)) value=maybeList.value; break; case ']': + if(!readingList) safethrow_wrongchar(c,Unitype_free(value)); *readingList=false; case ';': case ',': @@ -289,7 +290,7 @@ Maybe __ReadValue(DeserializeSharedData* shared, bool* readingList){ return SUCCESS(value); default: if(spaceAfterVal) - safethrow_wrongchar(c,;); + safethrow_wrongchar(c,Unitype_free(value)); valueStr.length++; break; } diff --git a/base/errors.h b/base/errors.h index 25d23c6..84e0b1a 100644 --- a/base/errors.h +++ b/base/errors.h @@ -32,7 +32,7 @@ void printMaybe(Maybe e); #define __RETURN_EXCEPTION(ERRMSG) return (Maybe){.errmsg=ERRMSG, .value=UniNull} -#define __EXIT(ERRMSG) ({ printf("\e[91m%s\e[0m \n", ERRMSG); exit(128); }) +#define __EXIT(ERRMSG) ({ printf("\e[91m%s\e[0m \n", ERRMSG); free(ERRMSG); exit(128); }) char* __doNothing(char* a); char* __unknownErr( );