Mercurial > hg > xemacs-beta
comparison src/eval.c @ 800:a5954632b187
[xemacs-hg @ 2002-03-31 08:27:14 by ben]
more fixes, first crack at finishing behavior implementation
TODO.ben-mule-21-5: Update.
configure.in: Fix for new error-checking types.
make-mswin-unicode.pl: Don't be fucked up by CRLF. Output code
to force errors when nonintercepted Windows calls issued.
behavior.el, dumped-lisp.el, menubar-items.el: Add support for saving using custom. Load into a dumped XEmacs.
Correct :title to :short-doc in accordance with behavior-defs.el.
Add a submenu under Options for turning on/off behaviors.
cl-macs.el: Properly document `loop'. Fix a minor bug in keymap iteration and
add support for bit-vector iteration.
lisp-mode.el: Rearrange and add items for macro expanding.
menubar-items.el: Document connection between these two functions.
window.el: Port stuff from GNU 21.1.
config.inc.samp, xemacs.mak: Separate out and add new variable for controlling error-checking.
s/windowsnt.h: Use new ERROR_CHECK_ALL; not related to DEBUG_XEMACS.
alloc.c, backtrace.h, buffer.c, buffer.h, bytecode.c, callproc.c, casetab.c, charset.h, chartab.c, cmdloop.c, config.h.in, console-msw.c, console-stream.c, console-tty.c, console.c, console.h, data.c, device-msw.c, device.c, device.h, dired-msw.c, dired.c, dumper.c, editfns.c, eldap.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, extents.c, faces.c, file-coding.c, file-coding.h, fileio.c, frame-msw.c, frame.c, frame.h, glyphs-gtk.c, glyphs-msw.c, glyphs-shared.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, insdel.c, intl-auto-encap-win32.c, intl-auto-encap-win32.h, intl-encap-win32.c, intl-win32.c, keymap.c, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, macros.c, marker.c, md5.c, menubar-x.c, menubar.c, mule-coding.c, ntproc.c, objects-gtk.c, objects-msw.c, objects-x.c, objects.c, opaque.c, print.c, process-nt.c, process-unix.c, process.c, rangetab.c, redisplay-msw.c, redisplay-output.c, redisplay.c, regex.c, scrollbar-msw.c, select-msw.c, signal.c, specifier.c, specifier.h, symbols.c, sysdep.c, syswindows.h, text.c, text.h, toolbar-msw.c, tooltalk.c, ui-gtk.c, unicode.c, window.c: Redo error-checking macros: ERROR_CHECK_TYPECHECK ->
ERROR_CHECK_TYPES, ERROR_CHECK_CHARBPOS -> ERROR_CHECK_TEXT, add
ERROR_CHECK_DISPLAY, ERROR_CHECK_STRUCTURES. Document these in
config.h.in. Fix code to follow docs. Fix *_checking_assert()
in accordance with new names.
Attempt to fix periodic redisplay crash freeing display line
structures. Add first implementation of sledgehammer redisplay
check.
Redo print_*() to use write_fmt_string(), write_fmt_string_lisp().
Fix bug in md5 handling.
Rename character-to-unicode to char-to-unicode; same for
unicode-to-char{acter}.
Move chartab documentation to `make-char-table'.
Some header cleanup.
Clean up remaining places where nonintercepted Windows calls are
being used.
automated/mule-tests.el: Fix for new Unicode support.
author | ben |
---|---|
date | Sun, 31 Mar 2002 08:30:17 +0000 |
parents | e38acbeb1cae |
children | 2b676dc88c66 |
comparison
equal
deleted
inserted
replaced
799:03d9f9084848 | 800:a5954632b187 |
---|---|
278 #ifdef DEFEND_AGAINST_THROW_RECURSION | 278 #ifdef DEFEND_AGAINST_THROW_RECURSION |
279 /* Used for error catching purposes by throw_or_bomb_out */ | 279 /* Used for error catching purposes by throw_or_bomb_out */ |
280 static int throw_level; | 280 static int throw_level; |
281 #endif | 281 #endif |
282 | 282 |
283 #ifdef ERROR_CHECK_TYPECHECK | 283 #ifdef ERROR_CHECK_STRUCTURES |
284 void check_error_state_sanity (void); | 284 static void check_error_state_sanity (void); |
285 #define CHECK_ERROR_STATE_SANITY() check_error_state_sanity () | |
286 #else | |
287 #define CHECK_ERROR_STATE_SANITY() | |
285 #endif | 288 #endif |
286 | 289 |
287 | 290 |
288 /************************************************************************/ | 291 /************************************************************************/ |
289 /* The subr object type */ | 292 /* The subr object type */ |
1324 return c.val; | 1327 return c.val; |
1325 } | 1328 } |
1326 c.val = (*func) (arg); | 1329 c.val = (*func) (arg); |
1327 if (threw) *threw = 0; | 1330 if (threw) *threw = 0; |
1328 catchlist = c.next; | 1331 catchlist = c.next; |
1329 #ifdef ERROR_CHECK_TYPECHECK | 1332 CHECK_ERROR_STATE_SANITY (); |
1330 check_error_state_sanity (); | |
1331 #endif | |
1332 return c.val; | 1333 return c.val; |
1333 } | 1334 } |
1334 | 1335 |
1335 | 1336 |
1336 /* Unwind the specbind, catch, and handler stacks back to CATCH, and | 1337 /* Unwind the specbind, catch, and handler stacks back to CATCH, and |
1378 | 1379 |
1379 /* Unwind the specpdl stack, and then restore the proper set of | 1380 /* Unwind the specpdl stack, and then restore the proper set of |
1380 handlers. */ | 1381 handlers. */ |
1381 unbind_to (catchlist->pdlcount); | 1382 unbind_to (catchlist->pdlcount); |
1382 catchlist = catchlist->next; | 1383 catchlist = catchlist->next; |
1383 #ifdef ERROR_CHECK_TYPECHECK | 1384 CHECK_ERROR_STATE_SANITY (); |
1384 check_error_state_sanity (); | |
1385 #endif | |
1386 } | 1385 } |
1387 while (! last_time); | 1386 while (! last_time); |
1388 #else | 1387 #else |
1389 /* Former XEmacs code. This is definitely not as correct because | 1388 /* Former XEmacs code. This is definitely not as correct because |
1390 there may be a number of catches we're unwinding, and a number | 1389 there may be a number of catches we're unwinding, and a number |
1407 --ben | 1406 --ben |
1408 */ | 1407 */ |
1409 /* Unwind the specpdl stack */ | 1408 /* Unwind the specpdl stack */ |
1410 unbind_to (c->pdlcount); | 1409 unbind_to (c->pdlcount); |
1411 catchlist = c->next; | 1410 catchlist = c->next; |
1412 #ifdef ERROR_CHECK_TYPECHECK | 1411 CHECK_ERROR_STATE_SANITY (); |
1413 check_error_state_sanity (); | |
1414 #endif | |
1415 #endif /* Former code */ | 1412 #endif /* Former code */ |
1416 | 1413 |
1417 gcprolist = c->gcpro; | 1414 gcprolist = c->gcpro; |
1418 backtrace_list = c->backlist; | 1415 backtrace_list = c->backlist; |
1419 lisp_eval_depth = c->lisp_eval_depth; | 1416 lisp_eval_depth = c->lisp_eval_depth; |
1703 | 1700 |
1704 /* Once we change `catchlist' below, the stuff in c will not be GCPRO'd. */ | 1701 /* Once we change `catchlist' below, the stuff in c will not be GCPRO'd. */ |
1705 GCPRO3 (harg, c.val, c.tag); | 1702 GCPRO3 (harg, c.val, c.tag); |
1706 | 1703 |
1707 catchlist = c.next; | 1704 catchlist = c.next; |
1708 #ifdef ERROR_CHECK_TYPECHECK | 1705 CHECK_ERROR_STATE_SANITY (); |
1709 check_error_state_sanity (); | |
1710 #endif | |
1711 /* Note: The unbind also resets Vcondition_handlers. Maybe we should | 1706 /* Note: The unbind also resets Vcondition_handlers. Maybe we should |
1712 delete this here. */ | 1707 delete this here. */ |
1713 Vcondition_handlers = XCDR (c.tag); | 1708 Vcondition_handlers = XCDR (c.tag); |
1714 unbind_to (speccount); | 1709 unbind_to (speccount); |
1715 | 1710 |
2127 signal_error_1 (Lisp_Object sig, Lisp_Object data) | 2122 signal_error_1 (Lisp_Object sig, Lisp_Object data) |
2128 { | 2123 { |
2129 for (;;) | 2124 for (;;) |
2130 Fsignal (sig, data); | 2125 Fsignal (sig, data); |
2131 } | 2126 } |
2132 #ifdef ERROR_CHECK_TYPECHECK | 2127 #ifdef ERROR_CHECK_STRUCTURES |
2133 void | 2128 static void |
2134 check_error_state_sanity (void) | 2129 check_error_state_sanity (void) |
2135 { | 2130 { |
2136 struct catchtag *c; | 2131 struct catchtag *c; |
2137 int found_error_tag = 0; | 2132 int found_error_tag = 0; |
2138 | 2133 |