diff --git a/src/error.c b/src/error.c
index 47d6f99464b179aa377db4e09a6cd5c515c9044b..e90c7c81c0123272d366a6440e0a4b5dadde4ba1 100644
--- a/src/error.c
+++ b/src/error.c
@@ -70,14 +70,15 @@ struct svalue throw_value = { T_INT };
 void va_error(char *fmt, va_list args)
 {
   char buf[2000];
-  static int in_error;
+  static char *in_error;
   if(in_error)
   {
+    char *tmp=in_error;
     in_error=0;
-    fatal("Recursive error() calls.\n");
+    fatal("Recursive error() calls, original error: %s",tmp);
   }
 
-  in_error=1;
+  in_error=buf;
 
   VSPRINTF(buf, fmt, args);