eolian: check for C type keyword before trying to append as C type keyword
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Wed, 17 Jun 2015 09:29:16 +0000 (10:29 +0100)
committerDaniel Kolesa <d.kolesa@osg.samsung.com>
Wed, 17 Jun 2015 09:29:37 +0000 (10:29 +0100)
This fixes a segv when non-type Eolian keyword is used.

@fix

src/lib/eolian/database_type.c

index f3a3a6f..787cc3d 100644 (file)
@@ -209,8 +209,10 @@ database_type_to_str(const Eolian_Type *tp, Eina_Strbuf *buf, const char *name)
              eina_strbuf_append_char(buf, '_');
           }
         int kw = eo_lexer_keyword_str_to_id(tp->name);
-        if (kw) eina_strbuf_append(buf, eo_lexer_get_c_type(kw));
-        else eina_strbuf_append(buf, tp->name);
+        if (kw && eo_lexer_is_type_keyword(kw))
+          eina_strbuf_append(buf, eo_lexer_get_c_type(kw));
+        else
+          eina_strbuf_append(buf, tp->name);
      }
    else if (tp->type == EOLIAN_TYPE_VOID)
      eina_strbuf_append(buf, "void");