linkdata_set implementation
authorken <ken@mihrtec.com>
Fri, 17 Feb 2017 05:45:57 +0000 (21:45 -0800)
committerken <ken@mihrtec.com>
Fri, 17 Feb 2017 05:45:57 +0000 (21:45 -0800)
src/ir.c

index 5f5ba21..e61d388 100644 (file)
--- a/src/ir.c
+++ b/src/ir.c
@@ -650,15 +650,16 @@ struct ir_set_t* ir_linkdata_set
     { namelist_iter = classld->namelist;\r
       if (classld->root_class == NULL)\r
        eprintf("No root class for classld\n");\r
-      for (class_iter = classld->root_class->nextchild;\r
-          class_iter != NULL;\r
-          class_iter = class_iter->nextsib)\r
+      class_iter = classld->root_class->nextchild;\r
+      while (class_iter != NULL)\r
        { if (classnames_identical(class_iter->name, namelist_iter->name))\r
            { if (namelist_iter == classld->namelist_head)\r
                break;\r
              class_iter = class_iter->nextchild;\r
              namelist_iter = namelist_iter->nextsib;\r
            }\r
+         else\r
+           class_iter = class_iter->nextsib;\r
        }\r
       if (class_iter == NULL)\r
        eprintf("Class resolution failed\n");\r
@@ -676,6 +677,8 @@ struct ir_set_t* ir_linkdata_set
        set = set->nextchild;\r
        namelist_iter = namelist_iter->nextsib;\r
       }\r
+      else\r
+       set = set->nextsib;\r
     }\r
   return set;\r
 }\r