Fix compilation failure under ENABLE_CHECKING.
[bpt/emacs.git] / src / ChangeLog
index 3f6f6a2..1ff5823 100644 (file)
@@ -1,3 +1,894 @@
+2012-09-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * alloc.c [ENABLE_CHECKING]: Include signal.h, since we need SIGABRT.
+
+2012-09-07  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * alloc.c (mark_buffer): Revert unsafe marking optimization.
+       (mark_object): Likewise for frame objects.
+
+2012-09-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * syssignal.h (handle_on_main_thread): Always declare,
+       even if FORWARD_SIGNAL_TO_MAIN_THREAD is not defined.
+       This ports to platforms without HAVE_PTHREAD.
+
+2012-09-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Signal-handler cleanup (Bug#12327).
+       Emacs's signal handlers were written in the old 4.2BSD style with
+       sigblock and sigmask and so forth, and this led to some
+       inefficiencies and confusion.  Rewrite these to use
+       pthread_sigmask etc. without copying signal sets around.  Also,
+       get rid of the confusing macros 'SIGNAL_THREAD_CHECK' and
+       'signal', and instead use functions that do not attempt to take
+       over the system name space.  This patch causes Emacs's text
+       segment to shrink by 0.7% on my platform, Fedora 17 x86-64.
+       * alloc.c, emacsgtkfixed.c, nsfns.m, widget.c, xmenu.c:
+       Do not include <signal.h> or "syssignal.h", as these
+       modules do not use signals.
+       * atimer.c, callproc.c, data.c, dispnew.c, emacs.c, floatfns.c:
+       * gtkutil.c, keyboard.c, process.c, sound.c, sysdep.c, term.c, xterm.c:
+       Do not include <signal.h>, as "syssignal.h" does that for us now.
+       * atimer.c (sigmask_atimers): New function.
+       (block_atimers, unblock_atimers): New functions,
+       replacing the old macros BLOCK_ATIMERS and UNBLOCK_ATIMERS.
+       All uses replaced.
+       * conf_post.h [SIGNAL_H_AHB]: Do not include <signal.h>;
+       no longer needed here.
+       * emacs.c (main): Inspect existing signal handler with sigaction,
+       so that there's no need to block and unblock SIGHUP.
+       * sysdep.c (struct save_signal): New member 'action', replacing
+       old member 'handler'.
+       (save_signal_handlers, restore_signal_handlers):
+       Use sigaction instead of 'signal' to save and restore.
+       (get_set_sighandler, set_sighandler) [!WINDOWSNT]:
+       New function.  All users of 'signal' modified to use set_sighandler
+       if they're writeonly, and to use sys_signal if they're read+write.
+       (emacs_sigaction_init, forwarded_signal): New functions.
+       (sys_signal): Remove.  All uses replaced by calls to sigaction
+       and emacs_sigaction_init, or by direct calls to 'signal'.
+       (sys_sigmask) [!__GNUC__]: Remove; no longer needed.
+       (sys_sigblock, sys_sigunblock, sys_sigsetmask): Remove;
+       all uses replaced by pthread_sigmask etc. calls.
+       * syssignal.h: Include <signal.h>.
+       (emacs_sigaction_init, forwarded_signal): New decls.
+       (SIGMASKTYPE): Remove.  All uses replaced by its definiens, sigset_t.
+       (SIGEMPTYMASK): Remove; all uses replaced by its definiens, empty_mask.
+       (sigmask, sys_sigmask): Remove; no longer needed.
+       (sigpause): Remove.  All uses replaced by its definiens, sigsuspend.
+       (sigblock, sigunblock, sigfree):
+       (sigsetmask) [!defined sigsetmask]:
+       Remove.  All uses replaced by pthread_sigmask.
+       (signal): Remove.  Its remaining uses (with SIG_DFL and SIG_IGN)
+       no longer need to be replaced, and its typical old uses
+       are now done via emacs_sigaction_init and sigaction.
+       (sys_sigblock, sys_sigunblock, sys_sigsetmask): Remove decls.
+       (sys_sigdel): Remove; unused.
+       (NSIG): Remove a FIXME; the code's fine.  Remove an unnecessary ifdef.
+
+2012-09-06  Eli Zaretskii  <eliz@gnu.org>
+
+       * process.c (CAN_HANDLE_MULTIPLE_CHILDREN): Fix a typo that broke
+       SIGCHLD handling on systems that don't have WNOHANG.  (Bug#12327)
+
+2012-09-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Explicitly mark buffer_defaults and buffer_local_symbols.
+       * alloc.c (Fgarbage_collect): Mark buffer_defaults and
+       mark_local_symbols here.
+       (mark_object): If GC_CHECK_MARKED_OBJECTS, simplify checking
+       since special buffers aren't marked here any more.
+       (allocate_buffer): Chain new buffer with all_buffers here...
+       * buffer.c (Fget_buffer_create, Fmake_indirect_buffer): ...and
+       not here.
+       (Vbuffer_defaults, Vbuffer_local_symbols): Remove.
+       (syms_of_buffer): Remove staticpro of the above.
+       (init_buffer_once): Set names for buffer_defaults and
+       buffer_local_symbols.
+
+2012-09-06  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use bool for booleans in font-related modules.
+       * font.c (font_intern_prop, font_style_to_value)
+       (font_style_symbolic, font_parse_xlfd, font_parse_fcname)
+       (generate_otf_features, font_check_otf_features, font_check_otf)
+       (font_match_p, font_list_entities, font_at):
+       * fontset.c (fontset_id_valid_p, reorder_font_vector
+       (fontset_find_font, Fset_fontset_font)
+       (face_suitable_for_char_p) [0]:
+       * ftfont.c (fc_initialized, ftfont_get_open_type_spec)
+       (ftfont_open, ftfont_text_extents, ftfont_check_otf):
+       (m17n_flt_initialized, ftfont_shape_by_flt):
+       * ftxfont.c (ftxfont_draw_bitmap, ftxfont_draw):
+       * nsfont.m (nsfont_draw):
+       * w32font.c (w32font_draw):
+       * w32term.c (x_draw_glyphless_glyph_string_foreground):
+       Use bool for booleans.
+       * font.h: Adjust to above API changes.
+       (struct font, struct font_driver, struct font_driver_list):
+       Use bool for booleans.
+       (struct font): Remove useless member encoding_type.
+       All users removed.
+       * fontset.c, xftfont.c: Omit unnecessary static decls.
+
+2012-09-06  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * alloc.c (mark_object): Revert window marking code
+       since it's unsafe for the Fset_window_configuration.
+
+2012-09-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix race conditions with signal handlers and errno (Bug#12327).
+       Be more systematic about preserving errno whenever a signal
+       handler returns, even if it's not in the main thread.  Do this by
+       renaming signal handlers to distinguish between signal delivery
+       and signal handling.  All uses changed.
+       * atimer.c (deliver_alarm_signal): Rename from alarm_signal_handler.
+       * data.c (deliver_arith_signal): Rename from arith_error.
+       * dispnew.c (deliver_window_change_signal): Rename from
+       window_change_signal.
+       * emacs.c (deliver_error_signal): Rename from fatal_error_signal.
+       (deliver_danger_signal) [SIGDANGER]: Rename from memory_warning_signal.
+       * keyboard.c (deliver_input_available_signal): Rename from
+       input_available_signal.
+       (deliver_user_signal): Rename from handle_user_signal.
+       (deliver_interrupt_signal): Rename from interrupt_signal.
+       * process.c (deliver_pipe_signal): Rename from send_process_trap.
+       (deliver_child_signal): Rename from sigchld_handler.
+       * atimer.c (handle_alarm_signal):
+       * data.c (handle_arith_signal):
+       * dispnew.c (handle_window_change_signal):
+       * emacs.c (handle_fatal_signal, handle_danger_signal):
+       * keyboard.c (handle_input_available_signal):
+       * keyboard.c (handle_user_signal, handle_interrupt_signal):
+       * process.c (handle_pipe_signal, handle_child_signal):
+       New functions, with the actual signal-handling code taken from the
+       original respective signal handlers, sans the sporadic attempts to
+       preserve errno, since that's now done by handle_on_main_thread.
+       * atimer.c (alarm_signal_handler): Remove unnecessary decl.
+       * emacs.c, floatfns.c, lisp.h: Remove unused FLOAT_CATCH_SIGKILL cruft.
+       * emacs.c (main_thread) [FORWARD_SIGNAL_TO_MAIN_THREAD]:
+       Move to sysdep.c.
+       (main) [FORWARD_SIGNAL_TO_MAIN_THREAD]:
+       Move initialization of main_thread to sysdep.c's init_signals.
+       * process.c (waitpid) [!WNOHANG]: #define to wait; that's good enough for
+       our usage, and simplifies the mainline code.
+       (record_child_status_change): New static function, as a helper
+       for handle_child_signal, and with most of the old child handler's
+       contents.
+       (CAN_HANDLE_MULTIPLE_CHILDREN): New constant.
+       (handle_child_signal): Use the above.
+       * sysdep.c (main_thread) [FORWARD_SIGNAL_TO_MAIN_THREAD]:
+       Moved here from emacs.c.
+       (init_signals) [FORWARD_SIGNAL_TO_MAIN_THREAD]: Initialize it;
+       code moved here from emacs.c's main function.
+       * sysdep.c, syssignal.h (handle_on_main_thread): New function,
+       replacing the old SIGNAL_THREAD_CHECK.  All uses changed.  This
+       lets callers save and restore errno properly.
+
+2012-09-05  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Remove redundant or unused things here and there.
+       * lisp.h (CYCLE_CHECK, CHAR_TABLE_TRANSLATE): Remove.
+       * conf_post.h (RE_TRANSLATE): Use char_table_translate.
+       * editfns.c (Fcompare_buffer_substrings): Likewise.
+       * frame.h (struct terminal, struct font_driver_list):
+       Remove redundant declarations.
+       * window.h (Qleft, Qright): Likewise.
+
+2012-09-05  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Do not mark objects from deleted buffers, windows and frames.
+       * alloc.c (mark_buffer): Mark just the buffer if it is dead.
+       (mark_object): Likewise for windows and frames.
+
+2012-09-05  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * alloc.c (valid_lisp_object_p): Treat killed buffers,
+       buffer_defaults and buffer_local_symbols as valid objects.
+       Return special value to denote them.
+
+2012-09-05  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * fileio.c, filelock.c, floatfns.c, fns.c: Use bool for boolean.
+       * fileio.c (auto_saving, auto_save_error_occurred, make_temp_name)
+       (Fexpand_file_name, barf_or_query_if_file_exists, Fcopy_file)
+       (file_name_absolute_p, Fsubstitute_in_file_name):
+       (check_executable, check_writable, Ffile_accessible_directory_p)
+       (Fset_file_selinux_context, Fdefault_file_modes)
+       (Finsert_file_contents, choose_write_coding_system)
+       (Fwrite_region, build_annotations, a_write, e_write)
+       (Fdo_auto_save):
+       * filelock.c (boot_time_initialized, get_boot_time)
+       (get_boot_time_1, lock_file_1, within_one_second):
+       * floatfns.c (in_float):
+       * fns.c (concat, internal_equal, Frequire, base64_encode_1)
+       (base64_decode_1, cmpfn_eql, cmpfn_user_defined)
+       (sweep_weak_table, sweep_weak_hash_tables, secure_hash):
+       * lisp.h (struct Lisp_Hash_Table.cmpfn):
+       * window.c (compare_window_configurations):
+       Use bool for booleans.
+       * fileio.c (auto_saving_dir_umask, auto_saving_mode_bits)
+       (Fdefault_file_modes): Now mode_t, not int, for modes.
+       (Fdo_auto_save): Set a boolean to 1 rather than using ++.
+       (internal_delete_file): Now returns void, not a (boolean) int,
+       since nobody was looking at the return value.
+       * lisp.h, window.h: Adjust to above API changes.
+
+       * xdisp.c (set_message): Simplify and reindent last change.
+
+2012-09-05  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/sysdep.$(O)): Update dependencies.
+
+2012-09-04  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * eval.c (call_debugger): Make the function non-static so that we
+       can call it from set_message.
+
+       * xdisp.c (set_message): Implement the new variable `debug-on-message'.
+       (syms_of_xdisp): Defvar it and `inhibit-debug-on-message'.
+
+2012-09-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Give more-useful info on a fatal error (Bug#12328).
+       * alloc.c [ENABLE_CHECKING]: Do not include <execinfo.h>.
+       (die) [ENABLE_CHECKING]: Call fatal_error_backtrace instead
+       of doing the work ourselves.
+       * emacs.c (fatal_error_signal): Let fatal_error_backtrace
+       do most of the work.
+       (fatal_error_backtrace): New function, taken from the guts
+       of the old fatal_error_signal, but with a new option to output
+       a backtrace.
+       (shut_down_emacs) [!DOS_NT]: Use strsignal to give more-useful
+       info about the signal than just its number.
+       * lisp.h (fatal_error_backtrace, emacs_backtrace): New decls.
+       * sysdep.c: Include <execinfo.h>
+       (emacs_backtrace): New function, taken partly from the previous
+       code of the 'die' function.
+       (emacs_abort): Call fatal_error_backtrace rather than abort.
+
+2012-09-04  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lread.c (readevalloop): Call internal-macroexpand-for-load to perform
+       eager (load-time) macro-expansion.
+       * lisp.mk (lisp): Add macroexp.
+
+2012-09-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify redefinition of 'abort' (Bug#12316).
+       Do not try to redefine the 'abort' function.  Instead, redo
+       the code so that it calls 'emacs_abort' rather than 'abort'.
+       This removes the need for the NO_ABORT configure-time macro
+       and makes it easier to change the abort code to do a backtrace.
+       * .gdbinit: Just stop at emacs_abort, not at w32_abort or abort.
+       * emacs.c (abort) [!DOS_NT && !NO_ABORT]:
+       Remove; sysdep.c's emacs_abort now takes its place.
+       * lisp.h (emacs_abort): New decl.  All calls from Emacs code to
+       'abort' changed to use 'emacs_abort'.
+       * msdos.c (dos_abort) [defined abort]: Remove; not used.
+       (abort) [!defined abort]: Rename to ...
+       (emacs_abort): ... new name.
+       * sysdep.c (emacs_abort) [!HAVE_NTGUI]: New function, taking
+       the place of the old 'abort' in emacs.c.
+       * w32.c, w32fns.c (abort): Do not #undef.
+       * w32.c (emacs_abort): Rename from w32_abort.
+
+2012-09-04  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32uniscribe.c (uniscribe_shape): Reverse the sign of
+       offsets[j].dv, since the y axis of the screen coordinates points
+       down, while the y axis of the font definition coordinates points
+       up.  This fixes display of Arabic diacritics such as KASRA and
+       KASRATAN.  (Bug#11860)
+
+2012-09-04  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Be more systematic about _setjmp vs setjmp.
+       * alloc.c (test_setjmp, mark_stack):
+       * image.c (PNG_LONGJMP) [PNG_LIBPNG_VER < 10500]:
+       (PNG_JMPBUF) [! (PNG_LIBPNG_VER < 10500)]:
+       (png_load, my_error_exit, jpeg_load):
+       * process.c (send_process_trap, send_process):
+       Uniformly prefer _setjmp and _longjmp to setjmp and longjmp.
+       The underscored versions are up to 30x faster on some hosts.
+       Formerly, the code used setjmp+longjmp sometimes and
+       _setjmp+_longjmp at other times, with no particular reason to
+       prefer setjmp+longjmp.
+
+2012-09-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix minor problem found by static checking.
+       * buffer.c (Fdelete_all_overlays): Return nil.
+
+2012-09-03  Martin Rudalics  <rudalics@gmx.at>
+
+       * buffer.c (Fdelete_all_overlays): New function.
+
+2012-09-03  Chong Yidong  <cyd@gnu.org>
+
+       * gtkutil.c: Add extern decl for Qxft.
+
+2012-09-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * emacs.c, eval.c: Use bool for boolean.
+       * emacs.c (initialized, inhibit_window_system, running_asynch_code):
+       (malloc_using_checking) [DOUG_LEA_MALLOC]:
+       (display_arg) [HAVE_X_WINDOWS || HAVE_NS]:
+       (noninteractive, no_site_lisp, fatal_error_in_progress, argmatch)
+       (main, decode_env_path, Fdaemon_initialized):
+       * eval.c (call_debugger, Finteractive_p, interactive_p):
+       (unwind_to_catch, Fsignal, wants_debugger, skip_debugger)
+       (maybe_call_debugger, Fbacktrace):
+       * process.c (read_process_output, exec_sentinel):
+       Use bool for booleans.
+       * emacs.c (shut_down_emacs): Omit unused boolean argument NO_X.
+       All callers changed.
+       * eval.c (interactive_p): Omit always-true boolean argument
+       EXCLUDE_SUBRS_P.  All callers changed.
+       * dispextern.h, lisp.h: Reflect above API changes.
+       * firstfile.c (dummy): Use the address of 'main', whose signature
+       won't change, instead of the address of 'initialize', whose
+       signature just changed from int to bool.
+       * lisp.h (fatal_error_in_progress): New decl of boolean, moved here ...
+       * msdos.c (fatal_error_in_progress): ... from here.
+       * xdisp.c (redisplaying_p): Now a boolean.  Set it to 1 instead
+       of incrementing it.
+       (redisplay_internal, unwind_redisplay): Simply clear
+       REDISPLAYING_P when unwinding, instead of saving its previous,
+       always-false value and then restoring it.
+
+       Clean up some extern decls.
+       Mostly, this hoists extern decls out of .c files and into .h files.
+       That way, we're more likely to catch errors if the interfaces change.
+       * alloc.c [USE_GTK]: Include "gtkutil.h" so that we need not
+       declare xg_mark_data.
+       * dispextern.h (x_frame_parm_handlers):
+       * font.h (Qxft):
+       * lisp.h (Qlexical_binding, Qinternal_interpreter_environment)
+       (Qextra_light, Qlight, Qsemi_light, Qsemi_bold, Qbold, Qextra_bold)
+       (Qultra_bold, Qoblique, Qitalic):
+       Move extern decl here from .c file.
+       * alloc.c (xg_mark_data) [USE_GTK]:
+       * doc.c (Qclosure):
+       * eval.c (Qlexical_binding):
+       * fns.c (time) [!HAVE_UNISTD_H]:
+       * gtkutil.c (Qxft, Qnormal, Qextra_light, Qlight, Qsemi_light)
+       (Qsemi_bold, Qbold, Qextra_bold, Qultra_bold, Qoblique, Qitalic):
+       * image.c (Vlibrary_cache, QCloaded_from) [HAVE_NTGUI]:
+       * lread.c (Qinternal_interpreter_environment):
+       * minibuf.c (Qbuffer):
+       * process.c (QCfamily, QCfilter):
+       * widget.c (free_frame_faces):
+       * xfaces.c (free_frame_menubar) [USE_X_TOOLKIT]:
+       * xfont.c (x_clear_errors):
+       * xterm.c (x_frame_parm_handlers):
+       Remove now-redundant extern decls.
+       * keyboard.c, keyboard.h (ignore_mouse_drag_p) [USE_GTK || HAVE_NS]:
+       * xfaces.c (Qultra_light, Qreverse_oblique, Qreverse_italic):
+       Now static.
+       * xfaces.c: Remove unnecessary static decls.
+       * xterm.c (updating_frame): Remove decl of nonexistent object.
+
+       * Makefile.in (gl-stamp): Don't scan $(SOME_MACHINE_OBJECTS)
+       when building globals.h, as the objects that are not built on
+       this host are not needed to compile C files on this host.
+
+2012-09-02  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.h: Remove prototype for x_wm_set_size_hint.
+
+       * frame.h: Add missing prototype for x_wm_set_size_hint.
+
+2012-09-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * doc.c, editfns.c, insdel.c, intervals.c: Use bool for boolean.
+       * doc.c (read_bytecode_char, get_doc_string, reread_doc_file)
+       (Fdocumentation, Fdocumentation_property, Fsnarf_documentation)
+       (Fsubstitute_command_keys):
+       * editfns.c (region_limit, find_field, Fconstrain_to_field)
+       (save_excursion_save, save_excursion_restore)
+       (disassemble_lisp_time, decode_time_components, emacs_nmemftime)
+       (format_time_string, general_insert_function)
+       (make_buffer_string, make_buffer_string_both)
+       (Fsubst_char_in_region, Ftranslate_region_internal, Fformat):
+       * insdel.c (check_markers, gap_left, adjust_markers_for_insert)
+       (copy_text, insert_1, insert_1_both, insert_from_string)
+       (insert_from_string_before_markers, insert_from_string_1)
+       (insert_from_buffer, insert_from_buffer_1, replace_range)
+       (replace_range_2, del_range_1, del_range_byte, del_range_both)
+       (del_range_2, modify_region):
+       * intervals.c (intervals_equal, balance_possible_root_interval)
+       (adjust_intervals_for_insertion, merge_properties_sticky)
+       (graft_intervals_into_buffer, lookup_char_property)
+       (adjust_for_invis_intang, set_point_both)
+       (get_property_and_range, compare_string_intervals)
+       (set_intervals_multibyte_1, set_intervals_multibyte):
+       * keyboard.c (decode_timer):
+       Use bool for boolean.
+       * intervals.h, lisp.h, systime.h: Reflect above API changes.
+       * editfns.c (struct info): Use 1-bit unsigned bitfields for booleans.
+
+2012-09-02  Chong Yidong  <cyd@gnu.org>
+
+       * keymap.c (push_key_description): Print M-TAB as C-M-i
+       (Bug#11758).
+
+2012-09-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (CCL_H, W32FONT_H): New macros.
+       (ATIMER_H, FONT_H, $(BLD)/alloc.$(O), $(BLD)/callproc.$(O))
+       ($(BLD)/editfns.$(O), $(BLD)/ccl.$(O), $(BLD)/chartab.$(O))
+       ($(BLD)/coding.$(O), $(BLD)/sysdep.$(O), $(BLD)/fontset.$(O))
+       ($(BLD)/sysdep.$(O), $(BLD)/w32fns.$(O), $(BLD)/keyboard.$(O))
+       ($(BLD)/w32term.$(O), $(BLD)/w32menu.$(O), $(BLD)/process.$(O))
+       ($(BLD)/w32font.$(O), $(BLD)/w32uniscribe.$(O)): Update dependencies.
+
+2012-09-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32uniscribe.c (uniscribe_shape): Handle correctly the case of
+       more than one grapheme cluster passed to the shaper: compute the
+       offset adjustment values separately for each cluster.  (Bug#11860)
+
+       * image.c: Restore mistakenly removed inclusion of w32.h.  Without
+       it, GCC doesn't see prototypes of w32_delayed_load, and complains
+       about implicit conversions from integer to pointer.
+
+2012-09-01  Daniel Colascione  <dancol@dancol.org>
+
+       * w32fns.c (x_display_info_for_name): Prevent crash if w32 window
+       system used too early.
+
+2012-09-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Better seed support for (random).
+       * emacs.c (main): Call init_random.
+       * fns.c (Frandom): Set the seed from a string argument, if given.
+       Remove long-obsolete Gentzel cruft.
+       * lisp.h, sysdep.c (seed_random): Now takes address and size, not long.
+       (init_random): New function.
+
+2012-09-01  Daniel Colascione  <dancol@dancol.org>
+
+       * xterm.h: Add header guards.  Declare x_menubar_window_to_frame.
+       Remove x_set_frame_alpha, x_bitmap_icon, x_make_frame_visible,
+       x_make_frame_invisible, x_iconify_frame, x_free_frame_resources,
+       x_wm_set_size_hint, x_query_colors, x_real_positions,
+       x_set_menu_bar_lines, x_char_width, x_char_height, x_sync,
+       x_set_tool_bar_lines, x_activate_menubar, and free_frame_menubar,
+       all of which have been moved to common code.
+
+       * xfaces.c: Include TERM_HEADER instead of listing all possible
+       window-system headers.
+
+       * w32xfns.c (x_sync): Correct definition of x_sync (a no-op here)
+       to match header.
+
+       * w32term.h (FRAME_X_WINDOW): Use FRAME_W32_WINDOW instead of
+       directly accessing frame internals.
+
+       * w32font.h: Include font.h.  Define syms_of_w32font and
+       globals_of_w32font.
+
+       * process.c: Include TERM_HEADER instead of listing all possible
+       window-system headers.
+
+       * nsterm.h: Remove declarations now in frame.h.  Define
+       FRAME_X_SCREEN, FRAME_X_VISUAL.
+
+       * menu.c: Include TERM_HEADER instead of listing all possible
+       window-system headers.
+
+       * keyboard.h: Declare ignore_mouse_drag_p whenever we have a
+       window system.
+
+       * keyboard.c: Include TERM_HEADER instead of listing all possible
+       window-system headers.
+
+       * image.c: Include TERM_HEADER instead of listing all possible
+       window-system headers.  Declare Vlibrary_cache when compiling for
+       Windows.
+
+       * gtkutil.h (xg_list_node_): Include xterm.h to pick up needed
+       window system declarations.
+
+       * frame.h: Move common functions here: set_frame_menubar,
+       x_set_window_size, x_sync, x_get_focus_frame,
+       x_set_mouse_position, x_set_mouse_pixel_position,
+       x_make_frame_visible, x_make_frame_invisible, x_iconify_frame,
+       x_char_width, x_char_height, x_pixel_width, x_pixel_height,
+       x_set_frame_alpha, x_set_menu_bar_lines, x_set_tool_bar_lines,
+       x_activate_menubar, x_real_positions, x_bitmap_icon,
+       x_set_menu_bar_lines, free_frame_menubar, x_free_frame_resources,
+       and x_query_colors.
+
+       * frame.c: Include TERM_HEADER instead of listing all possible
+       window-system headers.
+
+       * font.c: Include TERM_HEADER instead of listing all possible
+       window-system headers.
+
+       * emacs.c: Include TERM_HEADER.
+
+       * dispnew.c: Include TERM_HEADER instead of listing all possible
+       window-system headers.
+
+       * ccl.h: Include character.h.
+
+       * Makefile.in: Define WINDOW_SYSTEM_OBJ to hold objects needed for
+       the current window system; include in list of objects to link into
+       Emacs.
+
+2012-08-31  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Remove mark_ttys function and fix tty_display_info initialization.
+       * lisp.h (mark_ttys): Remove prototype.
+       * alloc.c (Fgarbage_collect): Remove redundant (and the only) call
+       to mark_ttys because all possible values of 'top_frame' slot are
+       the frames which are reachable from Vframe_list.
+       * term.c (mark_ttys): Remove.
+       (init_tty): Safely initialize 'top_frame' slot with Qnil.
+
+2012-08-31  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Change struct frame bitfields from unsigned char to unsigned.
+       * frame.h (struct frame): Change type of 'display_preempted',
+       'visible', 'iconified', 'has_minibuffer', 'wants_modeline',
+       'auto_raise', 'auto_lower', 'no_split', 'explicit_name',
+       'window_sizes_changed', 'mouse_moved' and 'pointer_invisible'
+       bitfields from unsigned char to unsigned.
+
+2012-08-31  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Remove unused member of struct x_output and struct w32_output.
+       * xterm.h (struct x_output): Remove unused field 'needs_exposure'.
+       * w32term.h (struct w32_output): Likewise.
+
+2012-08-30  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (x_wm_set_size_hint): Use 1 col for base_width so it
+       does not become zero (Bug#12234).
+
+2012-08-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * dispnew.c (update_frame_1): Pacify gcc -Wstrict-overflow
+       for GCC 4.7.1 x86-64.
+
+2012-08-30  Glenn Morris  <rgm@gnu.org>
+
+       * lread.c (init_lread): For out-of-tree builds, only add the
+       source directory's site-lisp dir to the load-path if it exists,
+       consistent with in-tree builds.  (Bug#12302)
+
+2012-08-28  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsmenu.m (initWithContentRect:styleMask:backing:defer:): Initialize
+       button_values to NULL. Call setStykeMask so dialogs get a close button.
+       (windowShouldClose:): Set window_closed.
+       (dealloc): New member, free button_values.
+       (process_dialog:): Make member function. Remove window argument,
+       replace window with self. Count buttons and allocate and store values
+       in button_values.
+       (addButton:value:row:): value is int with the name tag.  Call setTag
+       with tag. Remove return self, declare return value as void.
+       (addString:row:): Remove return self, declare return value as void.
+       (addSplit): Remove return self, declare return value as void.
+       (clicked:): Remove return self, declare return value as void.
+       Set dialog_return to button_values[seltag]. Code formatting change.
+       (initFromContents:isQuestion:): Adjust call to process_dialog.
+       Code formatting change.
+       (timeout_handler:): Set timer_fired to YES.
+       (runDialogAt:): Set timer_fired to NO.
+       Handle click on close button as quit.
+
+       * nsterm.h (EmacsDialogPanel): Make timer_fired BOOL.
+       Add window_closed and button_values.  Add void as return value for
+       add(Button|String|Split).  addButton takes int instead of Lisp_Object.
+       Add process_dialog as new member.
+
+2012-08-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * ralloc.c (free_bloc): Don't dereference a 'heap' structure if it
+       is not one of the heaps we manage.  (Bug#12242)
+
+2012-08-28  Glenn Morris  <rgm@gnu.org>
+
+       * eval.c (Fcalled_interactively_p): Doc fix.  (Bug#11747)
+
+2012-08-28  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fset_window_configuration): Remove handling of
+       auto-buffer-name window parameter.  Install revision of reverted
+       fix.
+
+2012-08-28  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Do not allow to set major mode for a dead buffer.
+       * buffer.c (Fset_buffer_major_mode): Signal an error
+       if the buffer is dead.
+       (Fother_buffer, other_buffer_safely): Remove redundant
+       nested declaration.
+
+2012-08-28  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Always use set_buffer_if_live to restore original buffer at unwind.
+       * buffer.h (record_unwind_current_buffer): New function.
+       * bytecode.c, dispnew.c, editfns.c, fileio.c, fns.c, insdel.c:
+       * keyboard.c, keymap.c, minibuf.c, print.c, process.c, textprop.c:
+       * undo.c, window.c: Adjust users.
+       * buffer.c (set_buffer_if_live): Fix comment.
+
+2012-08-28  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix usage of set_buffer_internal.
+       * buffer.h (set_buffer_internal): Make it BUFFER_INLINE.
+       * buffer.c (set_buffer_if_live): Use set_buffer_internal.
+       * coding.c (decode_coding): Omit redundant test.
+       * fileio.c (decide_coding_unwind): Likewise.
+       * fns.c (secure_hash): Likewise.
+       * insdel.c (modify_region): Likewise.
+       * keyboard.c (command_loop_1): Likewise.
+       * print.c (PRINTFINISH): Likewise.
+       * xdisp.c (run_window_scroll_functions): Use set_buffer_internal.
+
+2012-08-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * dispnew.c: Use bool for boolean.
+       (frame_garbaged, display_completed, delayed_size_change)
+       (fonts_changed_p, add_window_display_history)
+       (add_frame_display_history, verify_row_hash)
+       (adjust_glyph_matrix, clear_window_matrices, glyph_row_slice_p)
+       (row_equal_p, realloc_glyph_pool)
+       (allocate_matrices_for_frame_redisplay)
+       (showing_window_margins_p)
+       (adjust_frame_glyphs_for_frame_redisplay)
+       (build_frame_matrix_from_leaf_window, make_current)
+       (mirrored_line_dance, mirror_line_dance, update_frame)
+       (update_window_tree, update_single_window)
+       (check_current_matrix_flags, update_window, update_text_area)
+       (update_window_line, set_window_update_flags, scrolling_window)
+       (update_frame_1, scrolling, buffer_posn_from_coords)
+       (do_pending_window_change, change_frame_size)
+       (change_frame_size_1, sit_for):
+       Use bool for boolean.
+       (clear_glyph_matrix_rows): Rename from enable_glyph_matrix_rows,
+       and remove last int (actually boolean) argument, which was always 0.
+       All callers changed.
+       * dispextern.h, frame.h, lisp.h: Reflect above API changes.
+       * dispextern.h (struct composition_it): Use bool for boolean.
+       (struct glyph_matrix): Don't assume buffer sizes can fit in 'int'.
+       (struct bidi_it): Use unsigned:1, not int, for boolean prev_was_pdf.
+       * dired.c (file_name_completion):
+       Use bool for boolean.  (This was missed in an earlier change.)
+
+2012-08-27  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fset_window_configuration): Revert first part of
+       last change.
+
+2012-08-27  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.h (NSPanel): New class variable dialog_return.
+
+       * nsmenu.m (initWithContentRect:styleMask:backing:defer:): Initialize
+       dialog_return.
+       (windowShouldClose:): Use stop instead of stopModalWithCode.
+       (clicked:): Ditto, and also set dialog_return (Bug#12258).
+       (timeout_handler:): Use stop instead of abortModal.  Send a dummy
+       event.
+       (runDialogAt:): Make ret Lisp_Object.  Set it from dialog_return when
+       modal loop returns.
+
+2012-08-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * composite.c, data.c, dbusbind.c, dired.c: Use bool for booleans.
+       * composite.c (find_composition, composition_gstring_p)
+       (composition_reseat_it, find_automatic_composition):
+       * data.c (let_shadows_buffer_binding_p)
+       (let_shadows_global_binding_p, set_internal, make_blv)
+       (Fmake_variable_buffer_local, Fmake_local_variable)
+       (Fmake_variable_frame_local, arithcompare, cons_to_unsigned)
+       (cons_to_signed, arith_driver):
+       * dbusbind.c (xd_in_read_queued_messages):
+       * dired.c (directory_files_internal, file_name_completion):
+       Use bool for booleans.
+       * dired.c (file_name_completion):
+       * process.h (fd_callback):
+       Omit int (actually boolean) argument.  It wasn't being used.
+       All uses changed.
+       * composite.h, lisp.h: Reflect above API changes.
+
+       * cmds.c, coding.c: Use bool for booleans.
+       * cmds.c (move_point, Fself_insert_command):
+       * coding.h (struct composition status, struct coding_system):
+       * coding.c (detect_coding_utf_8, encode_coding_utf_8)
+       (detect_coding_utf_16, encode_coding_utf_16, detect_coding_emacs_mule)
+       (emacs_mule_char, decode_coding_emacs_mule)
+       (encode_coding_emacs_mule, detect_coding_iso_2022)
+       (decode_coding_iso_2022, encode_invocation_designation)
+       (encode_designation_at_bol, encode_coding_iso_2022)
+       (detect_coding_sjis, detect_coding_big5, decode_coding_sjis)
+       (decode_coding_big5, encode_coding_sjis, encode_coding_big5)
+       (detect_coding_ccl, encode_coding_ccl, decode_coding_raw_text)
+       (encode_coding_raw_text, detect_coding_charset)
+       (decode_coding_charset, encode_coding_charset, detect_eol)
+       (detect_coding, get_translation_table, produce_chars)
+       (consume_chars, reused_workbuf_in_use)
+       (make_conversion_work_buffer, code_conversion_save)
+       (decode_coding_object, encode_coding_object)
+       (detect_coding_system, char_encodable_p)
+       (Funencodable_char_position, code_convert_region)
+       (code_convert_string, code_convert_string_norecord)
+       (Fset_coding_system_priority):
+       * fileio.c (Finsert_file_contents):
+       Use bool for booleans.
+       * coding.h, lisp.h: Reflect above API changes.
+       * coding.c: Remove unnecessary static function decls.
+       (detect_coding): Use unsigned, not signed, to copy an unsigned field.
+       (decode_coding, encode_coding, decode_coding_gap): Return 'void',
+       not a boolean 'int', since callers never look at the return value.
+       (ALLOC_CONVERSION_WORK_AREA): Assume caller returns 'void', not 'int'.
+       * coding.h (decoding_buffer_size, encoding_buffer_size)
+       (emacs_mule_string_char): Remove unused extern decls.
+       (struct iso_2022_spec, struct coding_system):
+       Use 'unsigned int : 1' for boolean fields, since there's more than one.
+       (struct emacs_mule_spec): Remove unused field 'full_support'.
+       All initializations removed.
+       * cmds.c (internal_self_insert): Don't assume EMACS_INT fits in 'int'.
+
+2012-08-27  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix spare memory change (Bug#12286).
+       * alloc.c (mark_maybe_pointer): Handle MEM_TYPE_SPARE.
+       (valid_lisp_object_p): Likewise.
+
+2012-08-27  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fset_window_configuration): Record any window's old
+       buffer if it's replaced (see Bug#8789).  If the new current
+       buffer doesn't appear in the selected window, go to its old
+       point (Bug#12208).
+
+2012-08-27  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Special MEM_TYPE_SPARE to denote reserved memory.
+       * alloc.c (enum mem_type): New memory type.
+       (refill_memory_reserve): Use new type for spare memory.
+       This prevents live_cons_p and live_string_p from incorrect
+       detection of uninitialized objects from spare memory as live.
+
+2012-08-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Spelling fixes.
+       * Makefile.in (.PHONY): versioclean -> versionclean.
+
+       Remove unused external symbols.
+       * data.c (Qcons, Qfloat, Qmisc, Qstring, Qvector):
+       * window.c (Qwindow_valid_p, decode_valid_window):
+       Now static, not extern.
+       * data.c (Qinterval): Remove; unused.
+       (syms_of_data): Do not define 'interval'.
+       * lisp.h (Qinteger, Qstring, Qmisc, Qvector, Qfloat, Qcons):
+       * window.h (decode_valid_window):
+       Remove decls.
+
+       * character.c, charset.c, chartab.c: Use bool for booleans.
+       * character.c (lisp_string_width, string_count_byte8)
+       (string_escape_byte8):
+       * charset.c (charset_map_loaded, load_charset_map, read_hex):
+       (load_charset_map_from_file, map_charset_chars)
+       (Fdefine_charset_internal, define_charset_internal)
+       (Fdeclare_equiv_charset, find_charsets_in_text)
+       (Ffind_charset_region, char_charset, Fiso_charset):
+       * chartab.c (sub_char_table_ref, sub_char_table_ref_and_range)
+       (sub_char_table_set, sub_char_table_set_range)
+       (char_table_set_range, optimize_sub_char_table)
+       (map_sub_char_table):
+       Use bool for boolean.
+       * character.c (str_to_unibyte): Omit last boolean argument; it was
+       always 0.  All callers changed.
+       * character.h, charset.h: Adjust to match previous changes.
+       * character.h (char_printable_p): Remove decl of nonexistent function.
+       * charset.h (struct charset): Members code_linear_p, iso_chars_96,
+       ascii_compatible_p, supplementary_p, compact_codes_p, unified_p
+       are all boolean, so make them single-bit bitfields.
+
+       * lisp.h (ASET): Remove attempt to detect side effects.
+       It was meant to be temporary and it often doesn't work,
+       because when IDX has side effects the behavior of IDX==IDX
+       is undefined.  See Stefan Monnier in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-08/msg00762.html>.
+
+2012-08-26  Barry OReilly  <gundaetiapo@gmail.com>  (tiny change)
+
+       * lisp.h (functionp): New function (extracted from Ffunctionp).
+       (FUNCTIONP): Use it.
+       * eval.c (Ffunctionp): Use it.
+
+2012-08-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xgselect.c (xg_select): Use auto storage for the GPollFD buffer
+       as that's faster and simpler than static storage.  Don't bother
+       with the g_main_context_query overhead if g_main_context_pending
+       says no events are pending.
+       (gfds, gfds_size): Remove these static vars.
+       (xgselect_initialize): Remove; no longer needed.
+       All uses and decls removed.
+
+       * emacs.c (fatal_error_signal_hook): Remove.
+       All uses removed.  This leftover from old code was always 0.
+
+       * casefiddle.c, casetab.c, category.c: Use bool for boolean.
+       * casefiddle.c (casify_object, casify_region):
+       * casetab.c (set_case_table):
+       * category.c, category.h (word_boundary_p):
+       * category.h (CHAR_HAS_CATEGORY):
+       Use bool for booleans, instead of int.
+
+2012-08-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * makefile.w32-in ($(BLD)/alloc.$(O)): Depend on $(GNU_LIB)/execinfo.h.
+
+2012-08-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       On assertion failure, print backtrace if available.
+       * alloc.c [ENABLE_CHECKING]: Include <execinfo.h>.
+       (die) [ENABLE_CHECKING]: Print a backtrace if available.
+       * Makefile.in (LIB_EXECINFO): New macro.
+       (LIBES): Use it.
+
+       * bytecode.c, callint.c, callproc.c: Use bool for boolean.
+       * bytecode.c (exec_byte_code):
+       * callint.c (check_mark, Fcall_interactively):
+       * callproc.c (Fcall_process, add_env, child_setup, getenv_internal_1)
+       (getenv_internal, sync_process_alive, call_process_exited):
+       * lisp.h (USE_SAFE_ALLOCA):
+       Use bool for booleans, instead of int.
+       * lisp.h, process.h: Adjust prototypes to match above changes.
+       * callint.c (Fcall_interactively): Don't assume the mark's
+       offset fits in 'int'.
+
+2012-08-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * buffer.c, buffer.h: Use bool for boolean.
+       * buffer.c (reset_buffer_local_variables)
+       (buffer_lisp_local_variables, Fset_buffer_modified_p)
+       (Frestore_buffer_modified_p, Fset_buffer_multibyte):
+       (overlays_at, overlays_in, mouse_face_overlay_overlaps)
+       (overlay_touches_p, overlay_strings, Foverlay_put)
+       (report_overlay_modification, call_overlay_mod_hooks):
+       (mmap_enlarge, mmap_set_vars):
+       * buffer.h (buffer_has_overlays, uppercasep, lowercasep):
+       Use bool for booleans, instead of int.
+       * buffer.c (compact_buffer, mmap_free_1): Return void, not int,
+       since the 1-or-0 return value is always ignored anyway.
+       (mmap_initialized_p):
+       * buffer.h (struct buffer_text.inhibit_shrinking): Now bool, not int.
+       * buffer.h, lisp.h: Adjust prototypes to match above changes.
+
+2012-08-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * bidi.c: Use bool for boolean.
+       This is a bit more readable, and makes the text segment of bidi.o
+       0.4% smaller on my platform (GCC 4.7.1 x86-64, Fedora 15).
+       Presumably it's faster too.
+       (bidi_initialized, bidi_ignore_explicit_marks_for_paragraph_level):
+       Now bool.
+       (bidi_cache_find_level_change, bidi_cache_iterator_state)
+       (bidi_unshelve_cache, bidi_init_it, bidi_count_bytes)
+       (bidi_char_at_pos, bidi_fetch_char, bidi_paragraph_init)
+       (bidi_explicit_dir_char, bidi_level_of_next_char)
+       (bidi_find_other_level_edge, bidi_move_to_visually_next):
+       Use bool for booleans, instead of int.
+       * dispextern.h (bidi_init_it, bidi_paragraph_init)
+       (bidi_unshelve_cache): Adjust decls to match code.
+
+2012-08-23  Martin Rudalics  <rudalics@gmx.at>
+
+       * keyboard.c (Fposn_at_x_y): Do not allow internal window as
+       argument.
+
 2012-08-23  Paul Eggert  <eggert@cs.ucla.edu>
 
        * atimer.c, atimer.h (turn_on_atimers): Use bool for boolean.
        * w32uniscribe.c (uniscribe_shape): Fix producing gstring
        components for RTL text (Bug#11860).  Adjust X-OFFSET of each
        non-base glyph for the width of the base character, according to
-       what x_draw_composite_glyph_string_foreground expects.  Generate
-       WADJUST value according to composition_gstring_width's
+       what x_draw_composite_glyph_string_foreground expects.
+       Generate WADJUST value according to composition_gstring_width's
        expectations, to produce correct width of the composed character.
        Reverse the sign of the DU offset produced by ScriptPlace.