X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcontext.c;h=5585dfef4cca8bf6aee358ff5909963e5600c7c1;hb=04a60b34fc18ea3a2638893eaf24514177692eeb;hp=17699a49a591db9fcbbc03a013a9df2a15681872;hpb=69fb17bcfa5ed9c32754fa143b59f4a4a2dd4bd8;p=m6w6%2Fext-psi diff --git a/src/context.c b/src/context.c index 17699a4..5585dfe 100644 --- a/src/context.c +++ b/src/context.c @@ -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);