comparison src/free-hook.c @ 5050:6f2158fa75ed

Fix quick-build, use asserts() in place of ABORT() -------------------- ChangeLog entries follow: -------------------- ChangeLog addition: 2010-02-20 Ben Wing <ben@xemacs.org> * configure.ac (XE_COMPLEX_ARG): Correct doc of --quick-build: It also doesn't check for Lisp shadows. src/ChangeLog addition: 2010-02-20 Ben Wing <ben@xemacs.org> * EmacsFrame.c: * EmacsFrame.c (EmacsFrameRecomputeCellSize): * alloca.c (i00afunc): * buffer.c: * buffer.c (MARKED_SLOT): * buffer.c (complex_vars_of_buffer): * cm.c: * cm.c (cmcheckmagic): * console.c: * console.c (MARKED_SLOT): * device-x.c: * device-x.c (x_get_visual_depth): * emacs.c (sort_args): * eval.c (throw_or_bomb_out): * event-stream.c: * event-stream.c (Fadd_timeout): * event-stream.c (Fadd_async_timeout): * event-stream.c (Frecent_keys): * events.c: * events.c (Fdeallocate_event): * events.c (event_pixel_translation): * extents.c: * extents.c (process_extents_for_insertion_mapper): * fns.c (Fbase64_encode_region): * fns.c (Fbase64_encode_string): * fns.c (Fbase64_decode_region): * fns.c (Fbase64_decode_string): * font-lock.c: * font-lock.c (find_context): * frame-x.c: * frame-x.c (x_wm_mark_shell_size_user_specified): * frame-x.c (x_wm_mark_shell_position_user_specified): * frame-x.c (x_wm_set_shell_iconic_p): * frame-x.c (x_wm_set_cell_size): * frame-x.c (x_wm_set_variable_size): * frame-x.c (x_wm_store_class_hints): * frame-x.c (x_wm_maybe_store_wm_command): * frame-x.c (x_initialize_frame_size): * frame.c (delete_frame_internal): * frame.c (change_frame_size_1): * free-hook.c (check_free): * free-hook.c (note_block_input): * free-hook.c (log_gcpro): * gccache-gtk.c (gc_cache_lookup): * gccache-x.c: * gccache-x.c (gc_cache_lookup): * glyphs-gtk.c: * glyphs-gtk.c (init_image_instance_from_gdk_pixmap): * glyphs-x.c: * glyphs-x.c (extract_xpm_color_names): * insdel.c: * insdel.c (move_gap): * keymap.c: * keymap.c (keymap_lookup_directly): * keymap.c (keymap_delete_inverse_internal): * keymap.c (accessible_keymaps_mapper_1): * keymap.c (where_is_recursive_mapper): * lisp.h: * lstream.c (make_lisp_buffer_stream_1): * macros.c: * macros.c (pop_kbd_macro_event): * mc-alloc.c (remove_page_from_used_list): * menubar-x.c: * menubar-x.c (set_frame_menubar): * ralloc.c: * ralloc.c (obtain): * ralloc.c (relinquish): * ralloc.c (relocate_blocs): * ralloc.c (resize_bloc): * ralloc.c (r_alloc_free): * ralloc.c (r_re_alloc): * ralloc.c (r_alloc_thaw): * ralloc.c (init_ralloc): * ralloc.c (Free_Addr_Block): * scrollbar-x.c: * scrollbar-x.c (x_update_scrollbar_instance_status): * sunplay.c (init_device): * unexnt.c: * unexnt.c (read_in_bss): * unexnt.c (map_in_heap): * window.c: * window.c (real_window): * window.c (window_display_lines): * window.c (window_display_buffer): * window.c (set_window_display_buffer): * window.c (unshow_buffer): * window.c (Fget_lru_window): if (...) ABORT(); ---> assert(); More specifically: if (x == y) ABORT (); --> assert (x != y); if (x != y) ABORT (); --> assert (x == y); if (x > y) ABORT (); --> assert (x <= y); etc. if (!x) ABORT (); --> assert (x); if (x) ABORT (); --> assert (!x); DeMorgan's Law's applied and manually simplified: if (x && !y) ABORT (); --> assert (!x || y); if (!x || y >= z) ABORT (); --> assert (x && y < z); Checked to make sure that assert() of an expression with side effects ensures that the side effects get executed even when asserts are disabled, and add a comment about this being a requirement of any "disabled assert" expression. * depend: * make-src-depend: * make-src-depend (PrintDeps): Fix broken code in make-src-depend so it does what it was always supposed to do, which was separate out config.h and lisp.h and all the files they include into separate variables in the depend part of Makefile so that quick-build can turn off the lisp.h/config.h/text.h/etc. dependencies of the source files, to speed up recompilation.
author Ben Wing <ben@xemacs.org>
date Sat, 20 Feb 2010 05:05:54 -0600
parents 1227374e7199
children 88bd4f3ef8e4
comparison
equal deleted inserted replaced
5030:422b4b4fb2a6 5050:6f2158fa75ed
139 /* This can only happen if you try to free something that didn't 139 /* This can only happen if you try to free something that didn't
140 come from malloc */ 140 come from malloc */
141 #if !defined(__linux__) 141 #if !defined(__linux__)
142 /* I originally wrote: "There's really no need to drop core." 142 /* I originally wrote: "There's really no need to drop core."
143 I have seen the error of my ways. -slb */ 143 I have seen the error of my ways. -slb */
144 if (strict_free_check) 144 assert (!strict_free_check);
145 ABORT ();
146 #endif 145 #endif
147 printf("Freeing unmalloc'ed memory at %p\n", ptr); 146 printf("Freeing unmalloc'ed memory at %p\n", ptr);
148 __free_hook = check_free; 147 __free_hook = check_free;
149 __malloc_hook = check_malloc; 148 __malloc_hook = check_malloc;
150 goto end; 149 goto end;
153 if (size < 0) 152 if (size < 0)
154 { 153 {
155 /* This happens when you free twice */ 154 /* This happens when you free twice */
156 #if !defined(__linux__) 155 #if !defined(__linux__)
157 /* See above comment. */ 156 /* See above comment. */
158 if (strict_free_check) 157 assert (!strict_free_check);
159 ABORT ();
160 #endif 158 #endif
161 printf("Freeing %p twice\n", ptr); 159 printf("Freeing %p twice\n", ptr);
162 __free_hook = check_free; 160 __free_hook = check_free;
163 __malloc_hook = check_malloc; 161 __malloc_hook = check_malloc;
164 goto end; 162 goto end;
446 block_input_history blhist[BLHISTLIMIT]; 444 block_input_history blhist[BLHISTLIMIT];
447 445
448 note_block_input (char *file, int line) 446 note_block_input (char *file, int line)
449 { 447 {
450 note_block (file, line, block_type); 448 note_block (file, line, block_type);
451 if (interrupt_input_blocked > 2) ABORT(); 449 assert (interrupt_input_blocked <= 2);
452 } 450 }
453 451
454 note_unblock_input (char* file, int line) 452 note_unblock_input (char* file, int line)
455 { 453 {
456 note_block (file, line, unblock_type); 454 note_block (file, line, unblock_type);
486 log_gcpro (char *file, int line, struct gcpro *value, blocktype type) 484 log_gcpro (char *file, int line, struct gcpro *value, blocktype type)
487 { 485 {
488 if (type == ungcpro_type) 486 if (type == ungcpro_type)
489 { 487 {
490 if (value == gcprolist) goto OK; 488 if (value == gcprolist) goto OK;
491 if (! gcprolist) ABORT (); 489 assert (gcprolist);
492 if (value == gcprolist->next) goto OK; 490 if (value == gcprolist->next) goto OK;
493 if (! gcprolist->next) ABORT (); 491 assert (gcprolist->next);
494 if (value == gcprolist->next->next) goto OK; 492 if (value == gcprolist->next->next) goto OK;
495 if (! gcprolist->next->next) ABORT (); 493 assert (gcprolist->next->next);
496 if (value == gcprolist->next->next->next) goto OK; 494 if (value == gcprolist->next->next->next) goto OK;
497 if (! gcprolist->next->next->next) ABORT (); 495 assert (gcprolist->next->next->next);
498 if (value == gcprolist->next->next->next->next) goto OK; 496 if (value == gcprolist->next->next->next->next) goto OK;
499 ABORT (); 497 ABORT ();
500 OK:; 498 OK:;
501 } 499 }
502 gcprohist[gcprohistptr].file = file; 500 gcprohist[gcprohistptr].file = file;