Blob Blame History Raw
--- src/headers/paripriv.h
+++ src/headers/paripriv.h
@@ -523,10 +523,10 @@ void pari_init_parser(void);
 void pari_init_rand(void);
 void pari_init_seadata(void);
 void pari_pthread_init_seadata(void);
-void pari_pthread_init_varstate();
+void pari_pthread_init_varstate(void);
 void pari_thread_close_files(void);
 void pari_thread_init_seadata(void);
-void pari_thread_init_varstate();
+void pari_thread_init_varstate(void);
 
 /* BY FILES */
 
--- src/language/eval.c
+++ src/language/eval.c
@@ -1240,11 +1240,11 @@ closure_eval(GEN C)
         break;
       }
 
-#define EVAL_f(f) \
+#define EVAL_f0(f) f()
+#define EVAL_f1(f) sp--; f(st[sp])
+#define EVAL_fn(f) \
   switch (ep->arity) \
   { \
-    case 0: f(); break; \
-    case 1: sp--; f(st[sp]); break; \
     case 2: sp-=2; f(st[sp],st[sp+1]); break; \
     case 3: sp-=3; f(st[sp],st[sp+1],st[sp+2]); break; \
     case 4: sp-=4; f(st[sp],st[sp+1],st[sp+2],st[sp+3]); break; \
@@ -1275,7 +1275,12 @@ closure_eval(GEN C)
         GEN res;
         /* Macro Madness : evaluate function ep->value on arguments
          * st[sp-ep->arity .. sp]. Set res = result. */
-        EVAL_f(res = ((GEN (*)(ANYARG))ep->value));
+        switch (ep->arity)
+        {
+          case 0:  EVAL_f0(res = ((GEN (*)(void))ep->value)); break;
+          case 1:  EVAL_f1(res = ((GEN (*)(long))ep->value)); break;
+          default: EVAL_fn(res = ((GEN (*)(long, ...))ep->value));
+        }
         if (br_status) goto endeval;
         gel(st,sp++)=res;
         break;
@@ -1294,7 +1299,12 @@ closure_eval(GEN C)
       {
         entree *ep = (entree *)operand;
         long res;
-        EVAL_f(res = ((long (*)(ANYARG))ep->value));
+        switch (ep->arity)
+        {
+          case 0:  EVAL_f0(res = ((long (*)(void))ep->value)); break;
+          case 1:  EVAL_f1(res = ((long (*)(long))ep->value)); break;
+          default: EVAL_fn(res = ((long (*)(long, ...))ep->value));
+        }
         if (br_status) goto endeval;
         st[sp++] = res;
         break;
@@ -1303,7 +1313,12 @@ closure_eval(GEN C)
       {
         entree *ep = (entree *)operand;
         long res;
-        EVAL_f(res = ((int (*)(ANYARG))ep->value));
+        switch (ep->arity)
+        {
+          case 0:  EVAL_f0(res = ((int (*)(void))ep->value)); break;
+          case 1:  EVAL_f1(res = ((int (*)(long))ep->value)); break;
+          default: EVAL_fn(res = ((int (*)(long, ...))ep->value));
+        }
         if (br_status) goto endeval;
         st[sp++] = res;
         break;
@@ -1311,11 +1326,18 @@ closure_eval(GEN C)
     case OCcallvoid:
       {
         entree *ep = (entree *)operand;
-        EVAL_f(((void (*)(ANYARG))ep->value));
+        switch (ep->arity)
+        {
+          case 0:  EVAL_f0(((void (*)(void))ep->value)); break;
+          case 1:  EVAL_f1(((void (*)(long))ep->value)); break;
+          default: EVAL_fn(((void (*)(long, ...))ep->value));
+        }
         if (br_status) goto endeval;
         break;
       }
-#undef EVAL_f
+#undef EVAL_f0
+#undef EVAL_f1
+#undef EVAL_fn
 
     case OCcalluser:
       {
--- src/language/init.c
+++ src/language/init.c
@@ -126,7 +126,7 @@ void (*cb_pari_pre_recover)(long);
 void (*cb_pari_err_recover)(long);
 int (*cb_pari_break_loop)(int);
 int (*cb_pari_is_interactive)(void);
-void (*cb_pari_start_output)();
+void (*cb_pari_start_output)(void);
 
 const char * pari_library_path = NULL;