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