diff --git a/src/error.h b/src/error.h
index 01bd1349cca6b5e1209a117c1f67c772ada1d8c7..fcf39f18520e7bd64754586d8cb6c9359244064b 100644
--- a/src/error.h
+++ b/src/error.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: error.h,v 1.23 1998/07/16 23:09:39 hubbe Exp $
+ * $Id: error.h,v 1.24 1998/07/17 12:33:52 grubba Exp $
  */
 #ifndef ERROR_H
 #define ERROR_H
@@ -120,7 +120,16 @@ extern int throw_severity;
     } \
     recoveries->onerror=(X).previous; \
   } while(0)
-#else
+
+#define ASSERT_ONERROR(X) \
+  do{ \
+    if (!recoveries) break; \
+    if (recoveries->onerror != &X) { \
+      fatal("%s:%d ASSERT_ONERROR(%p) failed\n", \
+            __FILE__, __LINE__, &(X)); \
+    } \
+  }while(0)
+#else /* !DEBUG */
 #define SET_ONERROR(X,Y,Z) \
   do{ \
      if(!recoveries) break; \
@@ -131,7 +140,9 @@ extern int throw_severity;
   }while(0)
 
 #define UNSET_ONERROR(X) recoveries && (recoveries->onerror=X.previous)
-#endif
+
+#define ASSERT_ONERROR(X)
+#endif /* DEBUG */
 
 #if defined(DEBUG) && 0
 /* Works, but probably not interresting for most people