Eet_Dictionary *dict;
if (!ed || !str) return;
+ if (!ed->file->allocated_strings) goto the_end;
dict = eet_dictionary_get(ed->file->ef);
if (!eet_dictionary_string_check(dict, *str))
eina_stringshare_del(*str);
+ the_end:
*str = NULL;
}
if (!ed || !str) return;
+ ed->file->allocated_strings = EINA_TRUE;
dict = eet_dictionary_get(ed->file->ef);
if (*str && eet_dictionary_string_check(dict, *str))
*str = eina_stringshare_add(str_new);
char fid[8+8+8+2];
unsigned char free_strings : 1;
+ unsigned char allocated_strings : 1;
unsigned char dangling : 1;
unsigned char warning : 1;
};
/* Add and Handle tag parsed data */
if (ts)
{
- if (eet_dictionary_string_check(eet_dictionary_get(edf->ef), tag->value) == 0)
+ if (edf->allocated_strings &&
+ eet_dictionary_string_check(eet_dictionary_get(edf->ef), tag->value) == 0)
eina_stringshare_del(tag->value);
tag->value = eina_stringshare_add(ts);
eina_strbuf_append(txt, tag->value);
EINA_LIST_FREE(stl->tags, tag)
{
- if (tag->value && eet_dictionary_string_check(eet_dictionary_get(edf->ef), tag->value) == 0)
+ if (edf->allocated_strings &&
+ tag->value &&
+ eet_dictionary_string_check(eet_dictionary_get(edf->ef), tag->value) == 0)
eina_stringshare_del(tag->value);
if (edf->free_strings)
{