diff --git a/src/error.c b/src/error.c
index 833e92fff0fc598b4cfb5810aa12aa154bcf0f2f..7da618fa13d6236518264bb094bacdac5f615283 100644
--- a/src/error.c
+++ b/src/error.c
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: error.c,v 1.160 2008/05/27 18:50:44 mast Exp $
+|| $Id: error.c,v 1.161 2008/05/27 19:10:33 grubba Exp $
 */
 
 #define NO_PIKE_SHORTHAND
@@ -933,8 +933,8 @@ static void f_error_create(INT32 args)
 
 #define ERROR_DONE(FOO) \
   PIKE_CONCAT(FOO,_error_va(o,func, \
-			      base_sp,  args, \
-			      desc,foo)); \
+			      base_sp, args, \
+			      desc, &foo)); \
   va_end(foo)
 
 #define ERROR_STRUCT(STRUCT,O) \
@@ -976,7 +976,7 @@ static void f_error_create(INT32 args)
  */
 PMOD_EXPORT DECLSPEC(noreturn) void generic_error_va(
   struct object *o, const char *func, const struct svalue *base_sp, int args,
-  const char *fmt, va_list fmt_args)
+  const char *fmt, va_list *fmt_args)
 {
   struct generic_error_struct *err =
     (struct generic_error_struct *) get_storage (o, generic_error_program);
@@ -990,14 +990,14 @@ PMOD_EXPORT DECLSPEC(noreturn) void generic_error_va(
   {
     const char *tmp=in_error;
     in_error=0;
-    Pike_fatal("Recursive error() calls, original error: %s",tmp);
+    Pike_fatal("Recursive error() calls, original error: %s", tmp);
   }
   in_error = fmt ? fmt : "no error message";
 
   if (fmt) {
     struct string_builder s;
     init_string_builder(&s, 0);
-    string_builder_vsprintf(&s, fmt, fmt_args);
+    string_builder_vsprintf(&s, fmt, *fmt_args);
 
 #if 0
     if (!master_program) {
diff --git a/src/pike_error.h b/src/pike_error.h
index c5bef58f6601b954c868fe4c3ffd87a911f09a7e..e28c41bc43cb55614dcad9a21a6ba9c197b4e521 100644
--- a/src/pike_error.h
+++ b/src/pike_error.h
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: pike_error.h,v 1.46 2008/05/27 17:35:34 grubba Exp $
+|| $Id: pike_error.h,v 1.47 2008/05/27 19:10:33 grubba Exp $
 */
 
 #ifndef PIKE_ERROR_H
@@ -257,7 +257,7 @@ PMOD_EXPORT DECLSPEC(noreturn) void Pike_error(const char *fmt,...) ATTRIBUTE((n
 PMOD_EXPORT DECLSPEC(noreturn) void debug_fatal(const char *fmt, ...) ATTRIBUTE((noreturn));
 PMOD_EXPORT DECLSPEC(noreturn) void generic_error_va(
   struct object *o, const char *func, const struct svalue *base_sp, int args,
-  const char *fmt, va_list fmt_args)
+  const char *fmt, va_list *fmt_args)
   ATTRIBUTE((noreturn));
 PMOD_EXPORT DECLSPEC(noreturn) void throw_error_object(
   struct object *o,