diff options
| author | Richard M. Stallman | 2002-07-12 11:16:42 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2002-07-12 11:16:42 +0000 |
| commit | 26631f2b58f96dfa01644457743efca2297e391e (patch) | |
| tree | 4daa549cabb38481d00053ab4b7f1ad0ac4e3efa /src/eval.c | |
| parent | 20505336e1666c028d34ba1a5ad43182bfc94330 (diff) | |
| download | emacs-26631f2b58f96dfa01644457743efca2297e391e.tar.gz emacs-26631f2b58f96dfa01644457743efca2297e391e.zip | |
(Fsignal): Don't call cancel_hourglass.
For a memory-full error, don't call Vsignal_hook_function
and don't set Vsignaling_function.
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/eval.c b/src/eval.c index 8dd2d734e10..4381901c896 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -1453,7 +1453,8 @@ See also the function `condition-case'. */) | |||
| 1453 | Lisp_Object error_symbol, data; | 1453 | Lisp_Object error_symbol, data; |
| 1454 | { | 1454 | { |
| 1455 | /* When memory is full, ERROR-SYMBOL is nil, | 1455 | /* When memory is full, ERROR-SYMBOL is nil, |
| 1456 | and DATA is (REAL-ERROR-SYMBOL . REAL-DATA). */ | 1456 | and DATA is (REAL-ERROR-SYMBOL . REAL-DATA). |
| 1457 | That is a special case--don't do this in other situations. */ | ||
| 1457 | register struct handler *allhandlers = handlerlist; | 1458 | register struct handler *allhandlers = handlerlist; |
| 1458 | Lisp_Object conditions; | 1459 | Lisp_Object conditions; |
| 1459 | extern int gc_in_progress; | 1460 | extern int gc_in_progress; |
| @@ -1474,22 +1475,27 @@ See also the function `condition-case'. */) | |||
| 1474 | else | 1475 | else |
| 1475 | real_error_symbol = error_symbol; | 1476 | real_error_symbol = error_symbol; |
| 1476 | 1477 | ||
| 1478 | #if 0 /* rms: I don't know why this was here, | ||
| 1479 | but it is surely wrong for an error that is handled. */ | ||
| 1477 | #ifdef HAVE_X_WINDOWS | 1480 | #ifdef HAVE_X_WINDOWS |
| 1478 | if (display_hourglass_p) | 1481 | if (display_hourglass_p) |
| 1479 | cancel_hourglass (); | 1482 | cancel_hourglass (); |
| 1480 | #endif | 1483 | #endif |
| 1484 | #endif | ||
| 1481 | 1485 | ||
| 1482 | /* This hook is used by edebug. */ | 1486 | /* This hook is used by edebug. */ |
| 1483 | if (! NILP (Vsignal_hook_function)) | 1487 | if (! NILP (Vsignal_hook_function) |
| 1488 | && ! NILP (error_symbol)) | ||
| 1484 | call2 (Vsignal_hook_function, error_symbol, data); | 1489 | call2 (Vsignal_hook_function, error_symbol, data); |
| 1485 | 1490 | ||
| 1486 | conditions = Fget (real_error_symbol, Qerror_conditions); | 1491 | conditions = Fget (real_error_symbol, Qerror_conditions); |
| 1487 | 1492 | ||
| 1488 | /* Remember from where signal was called. Skip over the frame for | 1493 | /* Remember from where signal was called. Skip over the frame for |
| 1489 | `signal' itself. If a frame for `error' follows, skip that, | 1494 | `signal' itself. If a frame for `error' follows, skip that, |
| 1490 | too. */ | 1495 | too. Don't do this when ERROR_SYMBOL is nil, because that |
| 1496 | is a memory-full error. */ | ||
| 1491 | Vsignaling_function = Qnil; | 1497 | Vsignaling_function = Qnil; |
| 1492 | if (backtrace_list) | 1498 | if (backtrace_list && !NILP (error_symbol)) |
| 1493 | { | 1499 | { |
| 1494 | bp = backtrace_list->next; | 1500 | bp = backtrace_list->next; |
| 1495 | if (bp && bp->function && EQ (*bp->function, Qerror)) | 1501 | if (bp && bp->function && EQ (*bp->function, Qerror)) |
| @@ -1511,13 +1517,6 @@ See also the function `condition-case'. */) | |||
| 1511 | clause = find_handler_clause (handlerlist->handler, conditions, | 1517 | clause = find_handler_clause (handlerlist->handler, conditions, |
| 1512 | error_symbol, data, &debugger_value); | 1518 | error_symbol, data, &debugger_value); |
| 1513 | 1519 | ||
| 1514 | #if 0 /* Most callers are not prepared to handle gc if this returns. | ||
| 1515 | So, since this feature is not very useful, take it out. */ | ||
| 1516 | /* If have called debugger and user wants to continue, | ||
| 1517 | just return nil. */ | ||
| 1518 | if (EQ (clause, Qlambda)) | ||
| 1519 | return debugger_value; | ||
| 1520 | #else | ||
| 1521 | if (EQ (clause, Qlambda)) | 1520 | if (EQ (clause, Qlambda)) |
| 1522 | { | 1521 | { |
| 1523 | /* We can't return values to code which signaled an error, but we | 1522 | /* We can't return values to code which signaled an error, but we |
| @@ -1527,7 +1526,6 @@ See also the function `condition-case'. */) | |||
| 1527 | else | 1526 | else |
| 1528 | error ("Cannot return from the debugger in an error"); | 1527 | error ("Cannot return from the debugger in an error"); |
| 1529 | } | 1528 | } |
| 1530 | #endif | ||
| 1531 | 1529 | ||
| 1532 | if (!NILP (clause)) | 1530 | if (!NILP (clause)) |
| 1533 | { | 1531 | { |