X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fcontext.c;h=c86a595d8c79be86b07db026024c476080d3adcf;hp=17699a49a591db9fcbbc03a013a9df2a15681872;hb=e8a409b21cb50f5931ab02ce6ab4f4406be94394;hpb=69fb17bcfa5ed9c32754fa143b59f4a4a2dd4bd8 diff --git a/src/context.c b/src/context.c index 17699a4..c86a595 100644 --- a/src/context.c +++ b/src/context.c @@ -108,7 +108,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 +184,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 +193,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 +342,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);