fix build & tests
authorMichael Wallner <mike@php.net>
Tue, 2 Feb 2016 09:21:36 +0000 (10:21 +0100)
committerMichael Wallner <mike@php.net>
Tue, 2 Feb 2016 09:21:36 +0000 (10:21 +0100)
m4/psi_struct.m4
src/context_validate.c

index c57743022d8d812c4f5e1a1bc91eba11346dbcbc..e25b354e2824dc7b6be985b2229fcf6169e291cd 100644 (file)
@@ -21,10 +21,10 @@ AC_DEFUN(PSI_STRUCT_MEMBER, [
        if PSI_SH_TEST_SIZEOF($1 member_name); then
                PSI_CHECK_OFFSETOF($1, member_name)
                PSI_TYPE_INDIRECTION($2, [PSI_SH_SIZEOF([$1 member_name])], pl, as)
-               
+
                psi_member_sizeof=PSI_SH_SIZEOF($1 member_name)
                psi_member_offsetof=PSI_SH_OFFSETOF($1 member_name)
-               
+
                if test $pl -gt 0 && test $as -eq 0; then
                        check_size=PSI_SH_SIZEOF(void *)
                elif test $pl -eq 1 && test $as -gt 0; then
@@ -50,13 +50,15 @@ dnl Calls PSI_CHECK_SIZEOF and PSI_CHECK_ALIGNOF for the struct.
 dnl Calls PSI_CHECK_SIZEOF, PSI_CHECK_OFFSETOF and PSI_TYPE_INDIRECTON for each member.
 AC_DEFUN(PSI_STRUCT, [
        PSI_CHECK_SIZEOF($1)
-       PSI_CHECK_ALIGNOF($1)
-       psi_struct_name=m4_bregexp([$1], [^\(struct \)?\(\w+\)], [\2])
-       psi_struct_members="{PSI_T_STRUCT, \"struct\", \"$psi_struct_name\", PSI_SH_ALIGNOF($1), PSI_SH_SIZEOF($1), 0, 0}"
-       ifelse([$2],,,[m4_map_args_sep([PSI_STRUCT_MEMBER($1, m4_normalize(], [))], [], $2)])
-       psi_add_struct "$psi_struct_members"
-       if test "$1" = "$psi_struct_name"; then
-               psi_add_type "{PSI_T_STRUCT, \"$1\", \"$1\"}"
+       if PSI_SH_TEST_SIZEOF($1); then
+               PSI_CHECK_ALIGNOF($1)
+               psi_struct_name=m4_bregexp([$1], [^\(struct \)?\(\w+\)], [\2])
+               psi_struct_members="{PSI_T_STRUCT, \"struct\", \"$psi_struct_name\", PSI_SH_ALIGNOF($1), PSI_SH_SIZEOF($1), 0, 0}"
+               ifelse([$2],,,[m4_map_args_sep([PSI_STRUCT_MEMBER($1, m4_normalize(], [))], [], $2)])
+               psi_add_struct "$psi_struct_members"
+               if test "$1" = "$psi_struct_name"; then
+                       psi_add_type "{PSI_T_STRUCT, \"$1\", \"$1\"}"
+               fi
        fi
 ])
 
@@ -67,12 +69,14 @@ dnl Calls PSI_CHECK_SIZEOF for the union and each member.
 dnl Calls PSI_CHECK_OFFSETOF and PSI_TYPE_INDIRECTON for each member.
 AC_DEFUN(PSI_UNION, [
        PSI_CHECK_SIZEOF($1)
-       PSI_CHECK_ALIGNOF($1)
-       psi_struct_name=m4_bregexp([$1], [^\(union \)?\(\w+\)], [\2])
-       psi_struct_members="{PSI_T_UNION, \"union\", \"$psi_struct_name\", PSI_SH_ALIGNOF($1), PSI_SH_SIZEOF($1), 0, 0}"
-       ifelse([$2],,,[m4_map_args_sep([PSI_STRUCT_MEMBER($1, m4_normalize(], [))], [], $2)])
-       psi_add_union "$psi_struct_members"
-       if test "$1" = "$psi_struct_name"; then
-               psi_add_type "{PSI_T_UNION, \"$1\", \"$1\"}"
+       if PSI_SH_TEST_SIZEOF($1); then
+               PSI_CHECK_ALIGNOF($1)
+               psi_struct_name=m4_bregexp([$1], [^\(union \)?\(\w+\)], [\2])
+               psi_struct_members="{PSI_T_UNION, \"union\", \"$psi_struct_name\", PSI_SH_ALIGNOF($1), PSI_SH_SIZEOF($1), 0, 0}"
+               ifelse([$2],,,[m4_map_args_sep([PSI_STRUCT_MEMBER($1, m4_normalize(], [))], [], $2)])
+               psi_add_union "$psi_struct_members"
+               if test "$1" = "$psi_struct_name"; then
+                       psi_add_type "{PSI_T_UNION, \"$1\", \"$1\"}"
+               fi
        fi
 ])
index cf0695f0138ca19c34c9fd21088dd296295e7d46..45e2d987efba15185e435cae228ae99b3fef9d3d 100644 (file)
@@ -154,6 +154,9 @@ static inline int validate_decl_typedef(PSI_Data *data, decl_arg *def) {
                        def->var->name);
                return 0;
        }
+       if (def->type->type == PSI_T_VOID && def->var->pointer_level) {
+               def->type->type = PSI_T_POINTER;
+       }
        return 1;
 }