* edje: prevent some segv in edje_cc and detect wrong edje file
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 2 Jul 2010 15:37:37 +0000 (15:37 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 2 Jul 2010 15:37:37 +0000 (15:37 +0000)
before compiling them.

Patch by Rafael Fonseca <rfonseca@profusion.mobi>.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@49999 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/edje_cc_handlers.c
src/bin/edje_cc_parse.c

index 438cf37..67e92cf 100644 (file)
@@ -1586,7 +1586,7 @@ st_styles_style_name(void)
    stl->name = parse_str(0);
    EINA_LIST_FOREACH(edje_file->styles, l, tstl)
      {
-       if ((stl != tstl) && (!strcmp(stl->name, tstl->name)))
+       if (stl->name && tstl->name && (stl != tstl) && (!strcmp(stl->name, tstl->name)))
          {
             ERR("%s: Error. parse error %s:%i. There is already a style named \"%s\"",
                 progname, file_in, line - 1, stl->name);
index 24196cf..7c53ffd 100644 (file)
@@ -644,6 +644,8 @@ compile(void)
    int fd;
    off_t size;
    char *data, *p;
+   Eina_List *l;
+   Edje_Style *stl;
 
    if (!tmp_dir)
 #ifdef HAVE_EVIL
@@ -807,6 +809,13 @@ compile(void)
      }
    free(data);
    close(fd);
+
+   EINA_LIST_FOREACH(edje_file->styles, l, stl)
+      if (!stl->name)
+       {
+          ERR("%s: Error. style must have a name.", progname);
+          exit(-1);
+       }
 }
 
 int