diff --git a/src/error.c b/src/error.c
index 39ae2fe8b3b8e43db993f2eebc9d0d9b0c4e6d34..59849910cc152fd04bc23c80f031f95963d65c98 100644
--- a/src/error.c
+++ b/src/error.c
@@ -22,7 +22,7 @@
 #include "threads.h"
 #include "gc.h"
 
-RCSID("$Id: error.c,v 1.73 2001/07/01 21:34:50 mast Exp $");
+RCSID("$Id: error.c,v 1.74 2001/08/15 22:18:00 mast Exp $");
 
 #undef ATTRIBUTE
 #define ATTRIBUTE(X)
@@ -556,6 +556,20 @@ DECLSPEC(noreturn) void generic_error_va(struct object *o,
   pike_throw();  /* Hope someone is catching, or we will be out of balls. */
 }
 
+
+PMOD_EXPORT DECLSPEC(noreturn) void throw_error_object(
+  struct object *o,
+  char *func,
+  struct svalue *base_sp,  int args,
+  char *desc, ...) ATTRIBUTE((noreturn,format (printf, 5, 6)))
+{
+  va_list foo;
+  va_start(foo,desc);
+  ASSERT_THREAD_SWAPPED_IN();
+  DWERROR((stderr, "%s(): Throwing an error object\n", func));
+  ERROR_DONE(generic);
+}
+
 PMOD_EXPORT DECLSPEC(noreturn) void generic_error(
   char *func,
   struct svalue *base_sp,  int args,
diff --git a/src/pike_error.h b/src/pike_error.h
index d7a42ae5f5a557985864119f4ee2916eb61e0344..6821ee8a8db8adea82348f6b70136f6d256274d0 100644
--- a/src/pike_error.h
+++ b/src/pike_error.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: pike_error.h,v 1.12 2001/07/02 20:09:18 mast Exp $
+ * $Id: pike_error.h,v 1.13 2001/08/15 22:18:00 mast Exp $
  */
 #ifndef PIKE_ERROR_H
 #define PIKE_ERROR_H
@@ -203,6 +203,11 @@ void DECLSPEC(noreturn) generic_error_va(struct object *o,
 		      char *fmt,
 		      va_list foo)
   ATTRIBUTE((noreturn));
+PMOD_EXPORT DECLSPEC(noreturn) void throw_error_object(
+  struct object *o,
+  char *func,
+  struct svalue *base_sp,  int args,
+  char *desc, ...) ATTRIBUTE((noreturn,format (printf, 5, 6)));
 PMOD_EXPORT void DECLSPEC(noreturn) generic_error(
   char *func,
   struct svalue *base_sp,  int args,