now copying the language correctly, at least I hope
This commit is contained in:
parent
2d70208978
commit
5f34dbfeca
5 changed files with 44 additions and 22 deletions
|
|
@ -25,13 +25,25 @@ void ARC_Parser_Create(ARC_Parser **parser, ARC_Array *language, ARC_Parser_Init
|
|||
(*parser)->language.size = language->size;
|
||||
(*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);
|
||||
//copy the language tag into the current tag
|
||||
currentTag->tagId = languageTag->tagId;
|
||||
currentTag->tokensOrTagsSize = languageTag->tokensOrTagsSize;
|
||||
|
||||
//create place to store tokens or tags
|
||||
currentTag->tokensOrTags = (uint32_t **)malloc(sizeof(uint32_t *) * languageTag->tokensOrTagsSize);
|
||||
|
||||
//copy each or section into the tokensOrTags
|
||||
for(uint32_t orIndex = 0; orIndex < languageTag->tokensOrTagsSize; orIndex++){
|
||||
currentTag->tokensOrTags[orIndex] = (uint32_t *)malloc(sizeof(uint32_t) * (languageTag->tokensOrTags[orIndex][0] + 1));
|
||||
|
||||
for(uint32_t tokenOrTagIndex = 0; tokenOrTagIndex < languageTag->tokensOrTags[orIndex][0] + 1; tokenOrTagIndex++){
|
||||
currentTag->tokensOrTags[orIndex][tokenOrTagIndex] = languageTag->tokensOrTags[orIndex][tokenOrTagIndex];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -49,6 +61,12 @@ 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 the orIndex vlues
|
||||
for(uint32_t orIndex = 0; orIndex < currentTag->tokensOrTagsSize; orIndex++){
|
||||
free(currentTag->tokensOrTags[orIndex]);
|
||||
}
|
||||
|
||||
free(currentTag->tokensOrTags);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue