make the parser understandable by IDE
[m6w6/ext-psi] / src / context.c
index 17699a49a591db9fcbbc03a013a9df2a15681872..5585dfef4cca8bf6aee358ff5909963e5600c7c1 100644 (file)
@@ -2,6 +2,8 @@
 # include "config.h"
 #endif
 
+#include "php_psi_stdinc.h"
+
 #include "php.h"
 
 #ifdef HAVE_DIRENT_H
@@ -108,7 +110,7 @@ PSI_Context *PSI_ContextInit(PSI_Context *C, PSI_ContextOps *ops, PSI_ContextErr
                decl_union *dunion = init_decl_union(predef_union->var_name, dargs);
 
                dunion->size = predef_union->size;
-               dunion->align = dunion->offset;
+               dunion->align = predef_union->offset;
                for (member = &predef_union[1]; member->type_tag; ++member) {
                        decl_type *type;
                        decl_var *dvar;
@@ -184,7 +186,7 @@ void PSI_ContextBuild(PSI_Context *C, const char *paths)
 {
        int i, n;
        char *sep = NULL, *cpy = strdup(paths), *ptr = cpy;
-       struct dirent **entries = NULL;
+       struct dirent **entries;
 
        do {
                sep = strchr(ptr, ':');
@@ -193,6 +195,7 @@ void PSI_ContextBuild(PSI_Context *C, const char *paths)
                        *sep = 0;
                }
 
+               entries = NULL;
                n = php_scandir(ptr, &entries, psi_select_dirent, alphasort);
 
                if (n > 0) {
@@ -341,6 +344,12 @@ void PSI_ContextDtor(PSI_Context *C)
                }
                free(C->structs);
        }
+       if (C->unions) {
+               if (C->unions->list) {
+                       free(C->unions->list);
+               }
+               free(C->unions);
+       }
        if (C->enums) {
                if (C->enums->list) {
                        free(C->enums->list);