copies tagOrtoken and frees it now

This commit is contained in:
herbglitch 2024-11-12 13:07:23 -07:00
parent 9221d1e33e
commit 7554c6f385

View file

@ -26,6 +26,13 @@ void ARC_Parser_Create(ARC_Parser **parser, ARC_Array *language, ARC_Parser_Init
(*parser)->language.data = malloc(sizeof(ARC_ParserLanguageTag) * language->size);
memcpy((*parser)->language.data, language->data, sizeof(ARC_ParserLanguageTag) * language->size);
for(uint32_t index = 0; index < language->size; index++){
ARC_ParserLanguageTag *languageTag = ((ARC_ParserLanguageTag *)language->data) + index;
ARC_ParserLanguageTag *currentTag = ((ARC_ParserLanguageTag *)(*parser)->language.data) + index;
//copy the currentTag's tokenOrTags
memcpy(currentTag->tokensOrTags, languageTag->tokensOrTags, languageTag->tokensOrTagsSize);
}
}
//create the lexer
@ -39,6 +46,13 @@ void ARC_Parser_CreateFromString(ARC_Parser **parser, ARC_String *languageString
}
void ARC_Parser_Destroy(ARC_Parser *parser){
//clear all the copied token or tags from memory
for(uint32_t index = 0; index < parser->language.size; index++){
ARC_ParserLanguageTag *currentTag = ((ARC_ParserLanguageTag *)parser->language.data) + index;
free(currentTag->tokensOrTags);
}
//clear the copied language from memory
free(parser->language.data);
ARC_Lexer_Destroy(parser->lexer);