diff --git a/src/cpp.c b/src/cpp.c
index 0498e303bafc3f7dea51c9c879a0ca547b636e78..ef2d53e8d9798d1fd9cba8fb5c73fb00fbd9fbe8 100644
--- a/src/cpp.c
+++ b/src/cpp.c
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: cpp.c,v 1.91 2001/07/28 14:08:23 nilsson Exp $
+ * $Id: cpp.c,v 1.92 2001/08/15 22:18:41 mast Exp $
  */
 #include "global.h"
 #include "stralloc.h"
@@ -1557,7 +1557,8 @@ void f_cpp(INT32 args)
   if(this.compile_errors)
   {
     free_string_builder(&this.buf);
-    Pike_error("Cpp() failed\n");
+    throw_error_object(low_clone(cpp_error_program), 0, 0, 0,
+		       "Cpp() failed\n");
   }else{
     pop_n_elems(sp - save_sp);
     push_string(finish_string_builder(&this.buf));
diff --git a/src/errors.h b/src/errors.h
index 7574dc9b5280ce799135039e07df4d5e766806ba..af3533e57290979f6e3913fe7e35d57bf29ed0cd 100644
--- a/src/errors.h
+++ b/src/errors.h
@@ -106,6 +106,9 @@ DECLARE_ERROR(permission,
 	      ERR_INHERIT(generic),
   ERR_VAR(struct pike_string *,string,PIKE_T_STRING,permission_type)
 )
+
+DECLARE_ERROR(cpp, ERR_INHERIT(generic), EMPTY)
+
 #undef DECLARE_ERROR
 #undef ERR_INHERIT
 #undef ERR_VAR