Update Doku aus Driversourcen

Change-Id: I455f0813b970151089b3dc1b8d9407eea323cdd1
diff --git a/doc/master/runtime_error b/doc/master/runtime_error
index d109df8..835d6a5 100644
--- a/doc/master/runtime_error
+++ b/doc/master/runtime_error
@@ -1,16 +1,57 @@
 SYNOPSIS
-	void runtime_error(string err, string prg, string curobj, int line)
+        void runtime_error( string err, string prg, string curobj, int line
+                          , mixed culprit, int caught)
 
 DESCRIPTION
-	This function has to announce a runtime error to the active
-	user. If the user has enough privileges, it might give him the
-	full error message together with the source line. Else it
-	should issue a decent message ("Your sensitive mind notices a
-	wrongness in the fabric of space").
+        This function has to announce a runtime error to the active
+        user. If the user has enough privileges, it might give him the
+        full error message together with the source line. Else it
+        should issue a decent message ("Your sensitive mind notices a
+        wrongness in the fabric of space").
 
-	Note that prg denotes the program actually executed (which
-	might be an inherited one) whereas curobj is just the
-	offending object.
+        <err> is the error message, <prg> is the program executed (which
+        might be an inherited program), <curobj> is the current object at
+        the time of the error. <line> is the linenumber within the program.
+
+        If the error is a normal runtime error, <culprit> is -1. Otherwise,
+        the error occurred during a heartbeat and <culprit> is the object which
+        heart_beat() function was executed. Also, in case of a heartbeat error,
+        the heartbeat for the <culprit> has been turned off.
+
+        If the error is caught on a higher level, <caught> is non-zero;
+        otherwise it is 0.
+
+        Note that any of the the objects or programs might be destructed, ie.
+        might be passed as 0.
+
+        One common pitfall in the implementation of runtime_error() is
+        that runtime_error() itself could run out of evaluation ticks,
+        causing a runtime error itself. The workaround is to use
+        limited() like this:
+
+          static void
+          handle_runtime_error ( string err, string prg, string curobj
+                               , int line)
+          { ... the actual error handler ... }
+
+          static void
+          call_runtime_error (string err, string prg, string curobj, int line)
+          {
+              limited(#'handle_runtime_error, ({ 200000 }), err, prg, curobj
+                     , line);
+          }
+
+          void
+          runtime_error (string err, string prg, string curobj, int line)
+          {
+              limited(#'call_runtime_error, ({ LIMIT_UNLIMITED })
+                     , err, prg, curobj, line);
+          }
+
+HISTORY
+        LDMud 3.2.9 added the <culprit> argument.
+        LDMud 3.2.12/3.3.705 added the <caught> argument.
 
 SEE ALSO
-	log_error(M), heart_beat_error(M), raise_error(E)
+        log_error(M), heart_beat_error(M), runtime_warning(M),
+        raise_error(E), expand_define(E)