copies tagOrtoken and frees it now
This commit is contained in:
parent
9221d1e33e
commit
7554c6f385
1 changed files with 14 additions and 0 deletions
|
|
@ -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);
|
(*parser)->language.data = malloc(sizeof(ARC_ParserLanguageTag) * language->size);
|
||||||
|
|
||||||
memcpy((*parser)->language.data, language->data, 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
|
//create the lexer
|
||||||
|
|
@ -39,6 +46,13 @@ void ARC_Parser_CreateFromString(ARC_Parser **parser, ARC_String *languageString
|
||||||
}
|
}
|
||||||
|
|
||||||
void ARC_Parser_Destroy(ARC_Parser *parser){
|
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);
|
free(parser->language.data);
|
||||||
|
|
||||||
ARC_Lexer_Destroy(parser->lexer);
|
ARC_Lexer_Destroy(parser->lexer);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue