summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2015-07-08 13:25:32 +0100
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2015-07-08 13:25:32 +0100
commitc31a57db00173689c60543a9838479a16b93ac91 (patch)
tree11be3c2a840cf2485e92d70ac325b71033a20f6e
parent42156a7c34903beb40920368ae9027c3276a6a23 (diff)
downloadefl-c31a57db00173689c60543a9838479a16b93ac91.tar.gz
eolian/generator: delete a stringshare correctly on failure
-rw-r--r--src/bin/eolian/docs_generator.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/bin/eolian/docs_generator.c b/src/bin/eolian/docs_generator.c
index 9e4e66ec05..68045dedf0 100644
--- a/src/bin/eolian/docs_generator.c
+++ b/src/bin/eolian/docs_generator.c
@@ -45,7 +45,11 @@ _generate_ref(const char *refn, Eina_Strbuf *wbuf, Eina_Bool use_legacy)
const Eolian_Type *tp = eolian_type_struct_get_by_name(bname);
if (tp)
{
- if (!eolian_type_struct_field_get(tp, sfx + 1)) goto noref;
+ if (!eolian_type_struct_field_get(tp, sfx + 1))
+ {
+ eina_stringshare_del(bname);
+ goto noref;
+ }
_generate_ref(bname, wbuf, use_legacy);
eina_strbuf_append(wbuf, sfx);
eina_stringshare_del(bname);
@@ -56,7 +60,11 @@ _generate_ref(const char *refn, Eina_Strbuf *wbuf, Eina_Bool use_legacy)
if (tp)
{
const Eolian_Enum_Type_Field *efl = eolian_type_enum_field_get(tp, sfx + 1);
- if (!efl) goto noref;
+ if (!efl)
+ {
+ eina_stringshare_del(bname);
+ goto noref;
+ }
_generate_ref(bname, wbuf, use_legacy);
Eina_Stringshare *str = eolian_type_enum_field_c_name_get(efl);
eina_strbuf_append_char(wbuf, '.');