This is the mail archive of the
mailing list for the Guile project.
Bug in scm_call_catching_errors
- To: Guile Bug Mailing List <bug-guile at gnu dot org>
- Subject: Bug in scm_call_catching_errors
- From: Dirk Herrmann <dirk at ida dot ing dot tu-bs dot de>
- Date: Thu, 13 Jul 2000 10:13:33 +0200 (MEST)
- cc: Guile Mailing List <guile at sourceware dot cygnus dot com>
In root.c there is a function scm_call_catching_errors, which is not
called from anywhere within guile. Further, this function misuses the
variable scm_gc_heap_lock to make the function scm_error abort if an error
occurs within an error handler. This is a bug, since the error handler
might legally request some cells and thus cause a gc, even if everything
is allright. But, the gc which is called while scm_gc_heap_lock is set,
will abort under the assumption that gc was called recursively.
1) Is this function used at all? If not, we should deprecate it. It
seems to me that the functions in throw.[ch] provide an easier to use
2) As a fix (either until scm_call_catching_errors is removed or, if it
shall be kept, forever), I suggest adding a variable
scm_abort_on_error_p that is used instead of scm_gc_heap_lock.