avoid busting bash's stack with a too big if body in configure
[m6w6/ext-psi] / m4 / psi_macro.m4
index 0de4fdf7894ef92873286199f993a2c6cb16bed8..0bae220459423111f84c2679b704c67e651cf3c4 100644 (file)
@@ -4,20 +4,31 @@ AC_DEFUN(PSI_MACRO, [
                $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])))"
-               ])
+               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;"
                ], [
                        macro_body="return $macro_name$macro_call;"
                ])
                psi_macro="$macro_type psi_macro_$macro_name$macro_decl { $macro_body }"
-               PSI_MACROS="$PSI_MACROS $psi_macro"
+               cat >>$PSI_MACROS <<<"$psi_macro"
                PSI_REDIR($macro_name, psi_macro_$macro_name)
        ], [], PSI_INCLUDES)
 ])