fix leaks
[m6w6/ext-psi] / m4 / psi_macro.m4
index 439098fabe4b0ec57a71532c18f1eaa6738822c4..0ce6f84ac15b5dce19b0af3abf12398bce2bc613 100644 (file)
@@ -2,15 +2,26 @@ dnl PSI_MACRO(macro, decl args, action-if-true)
 AC_DEFUN(PSI_MACRO, [
        AC_CHECK_DECL(PSI_VAR_NAME($1)$2, [
                $3
-               macro_type=PSI_VAR_TYPE($1)
-               macro_name=PSI_VAR_NAME($1)
-               ifelse([$2], [], [
-                       macro_decl="()"
-                       macro_call=""
-               ], [
-                       macro_decl="$2"
-                       macro_call="(m4_map_args_sep([PSI_VAR_NAME(], [)], [, ], m4_bregexp($2, [(\(.*\))], [\1])))"
-               ])
+               macro_type="PSI_VAR_TYPE($1)"
+               macro_name="PSI_VAR_NAME($1)"
+               m4_case([$2],
+                       [(void)], [
+                               macro_decl="(void)"
+                               macro_call="()"
+                       ],
+                       [()], [
+                               macro_decl="()"
+                               macro_call="()"
+                       ],
+                       [], [
+                               macro_decl="()"
+                               macro_call=""
+                       ],
+                       [
+                               macro_decl="$2"
+                               macro_call="(m4_map_args_sep([PSI_VAR_NAME(], [)], [, ], m4_bregexp($2, [(\(.*\))], [\1])))"
+                       ]
+               )
                ifelse(PSI_VAR_TYPE($1), [void], [
                        macro_body="$macro_name$macro_call;"
                ], [