]> code.delx.au - gnu-emacs/blobdiff - src/ChangeLog
* profiler.c (handle_profiler_signal): Inhibit pending signals too,
[gnu-emacs] / src / ChangeLog
index ce6f56fa8fc31897a9c197b1920a2d373b0d6de0..744376b0efd10a5d5c8da02cb93fded6edadf426 100644 (file)
-2012-09-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+2012-10-04  Paul Eggert  <eggert@cs.ucla.edu>
 
-       * profiler.c (Fprofiler_cpu_stop, Fprofiler_memory_stop):
-       Return whether the profiler was running, instead of signaling an error
-       if it wasn't.
+       * profiler.c (handle_profiler_signal): Inhibit pending signals too,
+       to avoid similar races.
+       * keyboard.c (pending_signals): Now bool, not int.
+
+2012-10-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * profiler.c (handle_profiler_signal): Fix a malloc race
+       that caused Emacs to hang on Fedora 17 when profiling Lisp.
+
+2012-10-02  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (windowDidEnterFullScreen): Remove fprintf.
+
+2012-10-02  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c (sys_wait): Declare 'signame' 'const char *', to be
+       consistent with the change in return value of 'safe_strsignal'.
+
+2012-10-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Prefer plain 'static' to 'static inline' (Bug#12541).
+       * bidi.c (bidi_get_type, bidi_check_type, bidi_get_category)
+       (bidi_set_sor_type, bidi_push_embedding_level)
+       (bidi_pop_embedding_level, bidi_remember_char, bidi_copy_it)
+       (bidi_cache_reset, bidi_cache_shrink, bidi_cache_fetch_state)
+       (bidi_cache_search, bidi_cache_ensure_space)
+       (bidi_cache_iterator_state, bidi_cache_find)
+       (bidi_peek_at_next_level, bidi_set_paragraph_end)
+       (bidi_count_bytes, bidi_char_at_pos, bidi_fetch_char)
+       (bidi_explicit_dir_char, bidi_resolve_neutral_1):
+       Now 'static', not 'static inline'.
+
+       Count overruns when profiling; change units to ns.
+       * profiler.c (handle_profiler_signal): Count sampling intervals, not ms.
+       Give extra weight to samples after overruns, to attempt to count
+       the time more accurately.
+       (setup_cpu_timer): Change sampling interval units from ms to ns, since
+       the underlying primitives nominally do ns.
+       (Fprofiler_cpu_start): Document the change.  Mention that
+       the sampling intervals are only approximate.
+
+2012-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * frame.c (Fmake_terminal_frame): Prefer safer CONSP over !NILP.
+
+       * coding.h (ENCODE_FILE, DECODE_FILE, DECODE_SYSTEM): Remove special
+       case for the special 0 coding-system.
+
+       * buffer.c (Fset_buffer_multibyte): Signal an error instead of widening.
+       (Fmake_overlay): Remove redundant tests.
+       (fix_start_end_in_overlays): Remove redundant recentering.
+
+2012-10-02  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/alloc.$(O), $(BLD)/gmalloc.$(O)):
+       Update dependencies.
+
+2012-10-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix a malloc race condition involving strsignal.
+       A signal can arrive in the middle of a malloc, and Emacs's signal
+       handler can invoke strsignal, which can invoke malloc, which is
+       not portable.  This race condition bug makes Emacs hang on GNU/Linux.
+       Fix it by altering the signal handler so that it does not invoke
+       strsignal.
+       * emacs.c (shut_down_emacs): Use safe_strsignal, not strsignal.
+       * process.c (status_message): Use const pointer, in case strsignal
+       is #defined to safe_strsignal.
+       * sysdep.c (sys_siglist, init_signals): Always define and
+       initialize a substitute sys_siglist if the system does not define
+       one, even if HAVE_STRSIGNAL.
+       (safe_strsignal): Rename from strsignal.  Always define,
+       using sys_siglist.  Return a const pointer.
+       * syssignal.h (safe_strsignal): New decl.
+       (strsignal) [!HAVE_STRSIGNAL]: Define in terms of safe_strsignal.
+
+2012-10-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c (timer_loop): Fix code that waits for timer
+       expiration, to avoid high CPU usage.
+
+2012-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fns.c (check_hash_table, get_key_arg, maybe_resize_hash_table)
+       (sweep_weak_table): Remove redundant prototypes.
+
+2012-10-01  Fabrice Popineau  <fabrice.popineau@gmail.com>
+
+       * emacs.c: Move the inclusion of TERM_HEADER after including
+       windows.h on WINDOWSNT.  This avoids compilation problems with
+       MSVC.
+
+2012-10-01  Eli Zaretskii  <eliz@gnu.org>
+
+       * unexw32.c (OFFSET_TO_RVA, RVA_TO_OFFSET)
+       (RVA_TO_SECTION_OFFSET): Encode all macro arguments in parentheses.
+       (RVA_TO_PTR): Cast the result of RVA_TO_OFFSET to 'unsigned char *',
+       as the previous version used 'void *'.
+
+       * ralloc.c (ROUNDUP): Fix last change.
+       (MEM_ROUNDUP): Don't cast MEM_ALIGN, it is already of type
+       'size_t'.
+
+       * w32proc.c <disable_itimers>: New static flag.
+       (init_timers): Initialize it to zero, after creating the critical
+       sections used by the timer threads.
+       (term_timers): Set to 1 before deleting the critical sections.
+       (getitimer, setitimer): If disable_itimers is non-zero, return an
+       error indication without doing anything.  Reported by Fabrice
+       Popineau <fabrice.popineau@supelec.fr> as part of bug#12544.
+       (alarm) [HAVE_SETITIMER]: Be more conformant to the expected
+       return results.
+       [!HAVE_SETITIMER]: Behave as the previous version that didn't
+       support timers.
+
+       * emacs.c (shut_down_emacs) [WINDOWSNT]: Move the call to
+       term_ntproc after all the other bookkeeping, to get timers working
+       as long as possible.
+
+2012-10-01  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * xdisp.c (syms_of_xdisp): Default message-log-max to 1000, not 100.
+       Suggested by Juri Linkov in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00821.html>.
+
+       Prefer plain 'static' to 'static inline' (Bug#12541).
+       With static functions, modern compilers inline pretty well by
+       themselves; advice from programmers often hurts as much as it helps.
+       On my host (x86-64, Fedora 17, GCC 4.7.2, default 'configure'),
+       this change shrinks the text size of the Emacs executable by 1.1%
+       without affecting CPU significantly in my benchmark.
+       * alloc.c (mem_find, live_string_p, live_cons_p, live_symbol_p)
+       (live_float_p, live_misc_p, live_vector_p, live_buffer_p)
+       (mark_maybe_object, mark_maybe_pointer, bounded_number):
+       * buffer.c (bset_abbrev_mode, bset_abbrev_table)
+       (bset_auto_fill_function, bset_auto_save_file_format)
+       (bset_auto_save_file_name, bset_backed_up, bset_begv_marker)
+       (bset_bidi_display_reordering, bset_buffer_file_coding_system)
+       (bset_cache_long_line_scans, bset_case_fold_search)
+       (bset_ctl_arrow, bset_cursor_in_non_selected_windows)
+       (bset_cursor_type, bset_display_table, bset_extra_line_spacing)
+       (bset_file_format, bset_file_truename, bset_fringe_cursor_alist)
+       (bset_fringe_indicator_alist, bset_fringes_outside_margins)
+       (bset_header_line_format, bset_indicate_buffer_boundaries)
+       (bset_indicate_empty_lines, bset_invisibility_spec)
+       (bset_left_fringe_width, bset_major_mode, bset_mark)
+       (bset_minor_modes, bset_mode_line_format, bset_mode_name)
+       (bset_name, bset_overwrite_mode, bset_pt_marker)
+       (bset_right_fringe_width, bset_save_length)
+       (bset_scroll_bar_width, bset_scroll_down_aggressively)
+       (bset_scroll_up_aggressively, bset_selective_display)
+       (bset_selective_display_ellipses, bset_vertical_scroll_bar_type)
+       (bset_word_wrap, bset_zv_marker, set_buffer_overlays_before)
+       (set_buffer_overlays_after):
+       * category.c (bset_category_table):
+       * charset.c (read_hex):
+       * coding.c (produce_composition, produce_charset)
+       (handle_composition_annotation, handle_charset_annotation)
+       (char_encodable_p):
+       * dispnew.c (swap_glyph_pointers, copy_row_except_pointers)
+       (assign_row, set_frame_matrix_frame, make_current)
+       (add_row_entry):
+       * eval.c (set_specpdl_symbol, set_specpdl_old_value):
+       * fns.c (maybe_resize_hash_table):
+       * frame.c (fset_buffer_predicate, fset_minibuffer_window):
+       * gmalloc.c (register_heapinfo):
+       * image.c (lookup_image_type):
+       * intervals.c (set_interval_object, set_interval_left)
+       (set_interval_right, copy_interval_parent, rotate_right)
+       (rotate_left, balance_possible_root_interval):
+       * keyboard.c (kset_echo_string, kset_kbd_queue)
+       (kset_keyboard_translate_table, kset_last_prefix_arg)
+       (kset_last_repeatable_command, kset_local_function_key_map)
+       (kset_overriding_terminal_local_map, kset_real_last_command)
+       (kset_system_key_syms, clear_event, set_prop):
+       * lread.c (digit_to_number):
+       * marker.c (attach_marker, live_buffer, set_marker_internal):
+       * nsterm.m (ns_compute_glyph_string_overhangs):
+       * process.c (pset_buffer, pset_command)
+       (pset_decode_coding_system, pset_decoding_buf)
+       (pset_encode_coding_system, pset_encoding_buf, pset_filter)
+       (pset_log, pset_mark, pset_name, pset_plist, pset_sentinel)
+       (pset_status, pset_tty_name, pset_type, pset_write_queue):
+       * syntax.c (bset_syntax_table, dec_bytepos):
+       * terminal.c (tset_param_alist):
+       * textprop.c (interval_has_some_properties)
+       (interval_has_some_properties_list):
+       * window.c (wset_combination_limit, wset_dedicated)
+       (wset_display_table, wset_hchild, wset_left_fringe_width)
+       (wset_left_margin_cols, wset_new_normal, wset_new_total)
+       (wset_normal_cols, wset_normal_lines, wset_parent, wset_pointm)
+       (wset_right_fringe_width, wset_right_margin_cols)
+       (wset_scroll_bar_width, wset_start, wset_temslot, wset_vchild)
+       (wset_vertical_scroll_bar_type, wset_window_parameters):
+       * xdisp.c (wset_base_line_number, wset_base_line_pos)
+       (wset_column_number_displayed, wset_region_showing)
+       (window_box_edges, run_window_scroll_functions)
+       (append_glyph_string_lists, prepend_glyph_string_lists)
+       (append_glyph_string, set_glyph_string_background_width)
+       (append_glyph, append_composite_glyph)
+       (take_vertical_position_into_account):
+       * xfaces.c (x_create_gc, x_free_gc, merge_face_vectors)
+       (face_attr_equal_p, lface_equal_p, hash_string_case_insensitive)
+       (lface_hash, lface_same_font_attributes_p, lookup_face):
+       * xml.c (libxml2_loaded_p):
+       * xterm.c (x_set_mode_line_face_gc, x_set_glyph_string_gc)
+       (x_set_glyph_string_clipping, x_clear_glyph_string_rect):
+       Now 'static', not 'static inline'.
+
+       * bidi.c: Tune.
+       (bidi_copy_it): Do the whole copy with a single memcpy.
+       (bidi_char_at_pos): Merge the two STRING_CHAR calls into one.
+
+       Revert the FOLLOW-SYMLINKS change for file-attributes.
+       Doing it right would require several changes to Tramp, and there's
+       not enough time to get that tested before the freeze today.
+       * dired.c (directory_files_internal, Ffile_attributes):
+       Undo last change.
+
+       * frame.c (x_report_frame_params): Port better to wider ints.
+       Do not assume that EMACS_UINT is the same width as uprintmax_t,
+       or that pointers can be printed in 15 decimal digits.
+       Avoid GCC warnings if EMACS_UINT is wider than a pointer.
+
+2012-09-30  Fabrice Popineau  <fabrice.popineau@supelec.fr>
+
+       Support x64 build on MS-Windows.
+       * w32term.h (SCROLL_BAR_PACK, SCROLL_BAR_UNPACK): Define for x64.
+       (SET_SCROLL_BAR_W32_WINDOW): Cast ID to intptr_t, for
+       compatibility with x64.
+       (x_get_focus_frame): Add prototype.
+
+       * w32term.c (w32_draw_underwave): Don't use GCC extensions for
+       defining an XRectangle structure.
+
+       * w32proc.c (RVA_TO_PTR, w32_executable_type): Fix pointer
+       arithmetics for compatibility with x64.
+
+       * w32menu.c (add_menu_item): Use UINT_PTR instead of UINT, for
+       compatibility with x64.
+
+       * w32heap.h: Adjust prototypes and declarations.
+
+       * w32heap.c (RVA_TO_PTR, allocate_heap, sbrk, init_heap)
+       (round_heap): Use DWORD_PTR, ptrdiff_t and size_t instead of
+       DWORD, long, and unsigned long, for compatibility with x64.
+       (allocate_heap) [_WIN64]: Reserve 32GB of memory.
+       (sbrk): Argument is now of type ptrdiff_t.
+
+       * w32fns.c (HMONITOR): Condition declaration on _WIN32_WINNT being
+       less than 0x0500.
+       (w32_msg_pump): Use WPARAM type for 'result'.
+
+       * w32.c (init_environment, get_emacs_configuration): Support AMD64
+       architecture.
+       (init_ntproc): Cast arguments of _open_osfhandle to intptr_t, for
+       compatibility with x64.
+
+       * vm-limit.c (lim_data): Now size_t.
+       (check_memory_limits): Adjust prototypes of real_morecore and
+       __morecore to receive argument of type ptrdiff_t.  Use size_t for
+       five_percent and data_size.
+
+       * unexw32.c: Use DWORD_PTR instead of DWORD for file-scope
+       variables, for compatibility with x64.
+       (rva_to_section, offset_to_section, relocate_offset)
+       (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_SECTION_OFFSET)
+       (PTR_TO_RVA, RVA_TO_PTR, OFFSET_TO_PTR, get_section_info)
+       (copy_executable_and_dump_data): Use DWORD_PTR instead of DWORD
+       for compatibility with x64.
+
+       * sysdep.c (STDERR_FILENO): Define if not already defined.
+
+       * ralloc.c (real_morecore): Argument type is now ptrdiff_t.
+       (__morecore): Argument type is now ptrdiff_t.
+       (ROUNDUP, MEM_ROUNDUP): Use size_t instead of 'unsigned long'.
+       (relinquish): Use ptrdiff_t type for 'excess'.
+       (r_alloc_sbrk): Argument type is now ptrdiff_t.
+
+       * makefile.w32-in (HEAPSIZE): Get value from EMACS_HEAPSIZE.
+       (bootstrap-temacs-CMD, bootstrap-temacs-SH): Use $(EMACS_PURESIZE)
+       instead of a literal number.
+
+       * gmalloc.c [WINDOWSNT]: Include w32heap.h.
+       (min): Define only if not already defined.
+
+       * frame.c (x_report_frame_params): Use EMACS_UINT for the return
+       value of FRAME_X_WINDOW, to fit a 64-bit pointer on 64-bit Windows
+       hosts.
+
+       * image.c (x_bitmap_pixmap): Return ptrdiff_t, not int, since
+       'bitmaps' is a pointer.
+
+       * dispextern.h (x_bitmap_pixmap): Adjust prototype.
+
+       * alloc.c (gdb_make_enums_visible): Now conditional on __GNUC__.
+
+2012-09-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       file-attributes has a new optional arg FOLLOW-SYMLINKS.
+       * dired.c (directory_files_internal, Ffile_attributes):
+       New arg follow_symlinks.  All uses changed.
+
+2012-09-30  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * .gdbinit (xbacktrace): Adjust to recent "struct backtrace" change.
+
+2012-09-30  Eli Zaretskii  <eliz@gnu.org>
+
+       Support atimers and CPU profiler via profile.c on MS-Windows.
+       * w32proc.c (sig_mask, crit_sig): New static variables.
+       (sys_signal): Support SIGALRM and SIGPROF.
+       (sigemptyset, sigaddset, sigfillset, sigprocmask)
+       (pthread_sigmask, setpgrp): Move here from w32.c.  sigaddset,
+       sigfillset, and sigprocmask are no longer no-ops.
+       (sigismember): New function.
+       (struct itimer_data): New definition.
+       (ticks_now, real_itimer, prof_itimer, clocks_min, crit_real)
+       (crit_prof): New static variables.
+       (MAX_SINGLE_SLEEP): New definition.
+       (timer_loop, stop_timer_thread, term_timers, init_timers)
+       (start_timer_thread, getitimer, setitimer): New functions.
+       (alarm): No longer a no-op, calls setitimer.
+
+       * w32.c (term_ntproc): Call term_timers.
+       (init_ntproc): Make sure all signals are unblocked at startup, to
+       erase any traces of dumping.  Call init_timers.
+
+       * w32fns.c (hourglass_timer, HOURGLASS_ID): Remove.
+       Windows-specific code to display the hourglass mouse pointer is no
+       longer used.
+       (w32_wnd_proc): Remove code that handled the WM_TIMER message due
+       to hourglass timer expiration.
+       (start_hourglass, cancel_hourglass, DEFAULT_HOURGLASS_DELAY):
+       Remove, no longer used.
+       (w32_note_current_window, show_hourglass, hide_hourglass):
+       New functions, in support of hourglass cursor display similar to other
+       window systems.
+       (syms_of_w32fns): Don't initialize hourglass_timer.
+
+       * xdisp.c (start_hourglass, cancel_hourglass): Now used on
+       WINDOWSNT as well.
+       (start_hourglass) [WINDOWSNT]: Call w32_note_current_window.
+
+       * w32.h (init_timers, term_timers): Add prototypes.
+
+2012-09-30  Kenichi Handa  <handa@gnu.org>
+
+       * coding.c (decode_coding_ccl, encode_coding_ccl): Pay attention
+       to the buffer relocation which may be caused by ccl_driver.
+
+2012-09-30  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xfns.c (Fx_file_dialog): Update comment.
+
+       * w32fns.c (Fx_file_dialog): Update comment.
+
+       * nsfns.m (Fns_read_file_name): Add argument DIR_ONLY_P.
+       Initialize panel name field if OSX >= 10.6.
+
+       * fileio.c (Fnext_read_file_uses_dialog_p): Add HAVE_NS.
+
+       * nsfns.m (ns_frame_parm_handlers): Add x_set_fullscreen.
+
+       * nsterm.m (NEW_STYLE_FS): New define.
+       (ns_fullscreen_hook, windowWillEnterFullScreen)
+       (windowDidEnterFullScreen, windowWillExitFullScreen)
+       (windowDidExitFullScreen, toggleFullScreen, handleFS)
+       (setFSValue): New functions.
+       (EmacsFSWindow): New implementation.
+       (canBecomeKeyWindow): New function for EmacsFSWindow.
+       (ns_create_terminal): Set fullscreen_hook to ns_fullscreen_hook.
+       (dealloc): Release nonfs_window if in fullscreen.
+       (updateFrameSize:): Call windowDidMove to update top/left.
+       (windowWillResize:toSize:): Check if frame is still maximized.
+       (initFrameFromEmacs:): Initialize fs_state, fs_before_fs,
+       next_maximized, maximized_width, maximized_height and nonfs_window.
+       Call setCollectionBehavior if NEW_STYLE_FS.  Initialize bwidth and
+       tbar_height.
+       (windowWillUseStandardFrame:defaultFrame:): Update frame parameter
+       fullscreen. Set maximized_width/height.  Act on next_maximized.
+
+       * nsterm.h (MAC_OS_X_VERSION_10_7, MAC_OS_X_VERSION_10_8): New.
+       (EmacsView): Add variables for fullscreen.
+       (handleFS, setFSValue, toggleFullScreen): New in EmacsView.
+       (EmacsFSWindow): New interface for fullscreen.
+
+2012-09-30  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/profiler.$(O)): Update dependencies.
+
+2012-09-30  Chong Yidong  <cyd@gnu.org>
+
+       * fns.c (Frandom): Doc fix.
+
+2012-09-30  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Vwindow_combination_limit): New default value.
+       (Qwindow_size): New symbol replacing Qtemp_buffer_resize.
+
+2012-09-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * syssignal.h (PROFILER_CPU_SUPPORT): Don't define if PROFILING.
+       Suggested by Eli Zaretskii in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00811.html>.
+
+2012-09-30  Eli Zaretskii  <eliz@gnu.org>
+
+       * profiler.c (Fprofiler_cpu_stop): Use timer_settime only if
+       HAVE_TIMER_SETTIME is defined.
+
+2012-09-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Profiler improvements: more-accurate timers, overflow checks.
+       * profiler.c: Don't include stdio.h, limits.h, sys/time.h,
+       signal.h, setjmp.h.  Include systime.h instead.
+       (saturated_add): New function.
+       (record_backtrace, current_sample_interval): Use EMACS_INT, not size_t.
+       (record_backtrace, handle_profiler_signal): Saturate on fixnum overflow.
+       (profiler_timer, profiler_timer_ok) [HAVE_TIMER_SETTIME]:
+       New static vars.
+       (enum profiler_cpu_running): New enum.
+       (profiler_cpu_running): Now of that enum type, not bool.
+       All uses changed to store the new value.
+       (handle_profiler_signal): Rename from sigprof_handler_1,
+       for consistency with other handlers.  Do not check whether
+       cpu_log is a hash-table if garbage collecting, since it
+       doesn't matter in that case.
+       (deliver_profiler_signal): Rename from sigprof_handler,
+       for consistency with other handlers.
+       (setup_cpu_timer): New function, with much of what used to be in
+       Fprofiler_cpu_start.  Check for out-of-range argument.
+       Prefer timer_settime if available, and prefer
+       thread cputime clocks, then process cputime clocks, then
+       monotonic clocks, to the old realtime clock.  Use make_timeval
+       to round more-correctly when falling back to setitimer.
+       (Fprofiler_cpu_start): Use it.
+       (Fprofiler_cpu_stop): Prefer timer_settime if available.
+       Don't assume that passing NULL as the 2nd argument of setitimer
+       is the same as passing a pointer to all-zero storage.
+       Ignore SIGPROF afterwards.
+       (malloc_probe): Saturate at MOST_POSITIVE_FIXNUM.
+       * sysdep.c (emacs_sigaction_init): Also mask out SIGPROF in
+       non-fatal signal handlers.  Ignore SIGPROF on startup.
+       * syssignal.h (PROFILER_CPU_SUPPORT): Define this macro here, not
+       in profiler.c, since sysdep.c now uses it.
+
+       * sysdep.c (handle_fatal_signal): Bump backtrace size to 40.
+       Suggested by Eli Zaretskii in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00796.html>.
+
+2012-09-29  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/profiler.$(O)): Update dependencies.
+
+2012-09-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (struct backtrace): Remove indirection for `function' field.
+       * xdisp.c (redisplay_internal):
+       * profiler.c (record_backtrace, sigprof_handler_1):
+       * alloc.c (Fgarbage_collect):
+       * eval.c (interactive_p, Fsignal, eval_sub, Ffuncall, Fbacktrace)
+       (Fbacktrace_frame): Adjust accordingly.
+
+2012-09-28  Glenn Morris  <rgm@gnu.org>
+
+       * eval.c (Frun_hook_with_args, Frun_hook_with_args_until_success)
+       (Frun_hook_with_args_until_failure): Doc fixes.
+
+2012-09-28  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (syms_of_xdisp) <Qredisplay_internal>: Rename from
+       Qautomatic_redisplay and change the symbol name.  All users changed.
+
+2012-09-28  Tomohiro Matsuyama  <tomo@cx4a.org>
+
+       * profiler.c (sigprof_handler): Fix race condition.
+
+2012-09-28  Glenn Morris  <rgm@gnu.org>
+
+       * lread.c (lisp_file_lexically_bound_p): Handle #! lines.  (Bug#12528)
+
+2012-09-27  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Check more robustly for timer_settime.
+       * Makefile.in (LIB_TIMER_TIME): New macro.
+       (LIBES): Add it.
+       * atimer.c (alarm_timer, alarm_timer_ok, set_alarm, init_atimer):
+       Use HAVE_TIMER_SETTIME, not SIGEV_SIGNAL, to decide whether to
+       call timer_settime.
+
+2012-09-26  Tomohiro Matsuyama  <tomo@cx4a.org>
+
+       * profiler.c (Fprofiler_cpu_start): Remove unnecessary flag SA_SIGINFO.
 
 2012-09-26  Juanma Barranquero  <lekktu@gmail.com>
 
+       * makefile.w32-in ($(BLD)/profiler.$(O)): Update dependencies.
+
+2012-09-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * character.h (MAYBE_UNIFY_CHAR): Remove.
+       * charset.c, charset.h (maybe_unify_char): Now static.
+       * charset.c (decode_char): Use maybe_unify_char, not MAYBE_UNIFY_CHAR.
+       Since this stuff is now private to charset.c, there's no need for
+       a public macro and no need to inline by hand.
+
+2012-09-26  Tomohiro Matsuyama  <tomo@cx4a.org>
+            Stefan Monnier  <monnier@iro.umontreal.ca>
+            Juanma Barranquero  <lekktu@gmail.com>
+
+       * profiler.c: New file.
+       * Makefile.in (base_obj): Add profiler.o.
        * makefile.w32-in (OBJ2, GLOBAL_SOURCES): Add profiler.c.
        ($(BLD)/profiler.$(O)): New target.
+       * emacs.c (main): Call syms_of_profiler.
+       * alloc.c (Qautomatic_gc): New constant.
+       (MALLOC_PROBE): New macro.
+       (xmalloc, xzalloc, xrealloc, lisp_malloc, lisp_align_malloc): Use it.
+       (total_bytes_of_live_objects): New function.
+       (Fgarbage_collect): Use it.  Record itself in backtrace_list.
+       Call malloc_probe for the memory profiler.
+       (syms_of_alloc): Define Qautomatic_gc.
+       * eval.c (eval_sub, Ffuncall): Reorder assignments to avoid
+       race condition.
+       (struct backtrace): Move definition...
+       * lisp.h (struct backtrace): ..here.
+       (Qautomatic_gc, profiler_memory_running): Declare vars.
+       (malloc_probe, syms_of_profiler): Declare functions.
+       * xdisp.c (Qautomatic_redisplay): New constant.
+       (redisplay_internal): Record itself in backtrace_list.
+       (syms_of_xdisp): Define Qautomatic_redisplay.
 
-2012-09-25  Stefan Monnier  <monnier@iro.umontreal.ca>
+2012-09-25  Eli Zaretskii  <eliz@gnu.org>
+2012-09-25  Juanma Barranquero  <lekktu@gmail.com>
 
-       * profiler.c: Rename sample_profiler_* to profiler_cpu_* and
-       memory_profiler_* to profiler_memory_*.  Move sigprof_handler before
-       its first use, inside the PROFILER_CPU_SUPPORT conditional.
+       * makefile.w32-in ($(BLD)/callproc.$(O)): Update dependencies.
 
-2012-09-24  Stefan Monnier  <monnier@iro.umontreal.ca>
+2012-09-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Prefer POSIX timers if available.
+       They avoid a race if the timer is too close to the current time.
+       * atimer.c (alarm_timer, alarm_timer_ok) [SIGEV_SIGNAL]: New static vars.
+       (set_alarm) [SIGEV_SIGNAL]: Use POSIX timers if available.
+       (init_atimer) [SIGEV_SIGNAL]: Initialize them.
+
+2012-09-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * coding.c (CHAR_STRING_ADVANCE_NO_UNIFY): Make it an alias of
+       CHAR_STRING_ADVANCE.
+       (STRING_CHAR_ADVANCE_NO_UNIFY): Make it an alias of
+       STRING_CHAR_ADVANCE.
+
+2012-09-25  Juanma Barranquero  <lekktu@gmail.com>
+
+       Move Vlibrary_cache to emacs.c and reset before dumping.
+
+       * lisp.h (reset_image_types): Declare.
+       [WINDOWSNT] (Vlibrary_cache): Declare.
+
+       * image.c (reset_image_types): New function.
+
+       * emacs.c [WINDOWSNT] (Vlibrary_cache): Move from w32.c.
+       (syms_of_emacs) [WINDOWSNT] <Vlibrary_cache>: Initialize and staticpro.
+       (Fdump_emacs): Reset Vlibrary_cache and image_types.
+
+       * w32.c (Vlibrary_cache): Do not define; moved to emacs.c
+       (globals_of_w32) <Vlibrary_cache>: Do not initialize.
+
+       * w32.h (Vlibrary_cache): Do not declare.
+
+2012-09-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c (sys_signal): Handle all signals defined by the
+       MS-Windows runtime, not just SIGCHLD.  Actually install the signal
+       handlers for signals supported by Windows.  Don't override
+       term_ntproc as the handler for SIGABRT.
+       (sigaction): Rewrite to call sys_signal instead of duplicating its
+       code.
+       (sys_kill): Improve commentary.
+
+       * w32.c (term_ntproc): Accept (and ignore) one argument, for
+       consistency with a signature of a signal handler.  All callers
+       changed.
+       (init_ntproc): Accept an argument DUMPING.  If dumping, don't
+       install term_ntproc as a signal handler for SIGABRT, as that
+       should be done by the dumped Emacs.
+
+       * w32.h (init_ntproc, term_ntproc): Adjust prototypes.
 
-       * profiler.c (evict_lower_half): Fix typo.
-       (PROFILER_CPU_SUPPORT): Check and define if cpu-profiler is supported.
-       Don't compile the cpu-profiler code, if not supported.
-       (malloc_probe): Presume memory_log is non-nil.
-       (syms_of_profiler): Don't defsubr functions when they aren't defined.
+       * w32select.c (term_w32select): Protect against repeated
+       invocation by setting clipboard_owner to NULL after calling
+       DestroyWindow.
 
-       * lisp.h (sample_profiler_running, gc_probe): Don't declare.
+       * emacs.c (shut_down_emacs, main): Adapt the calls to init_ntproc
+       and term_ntproc to their modified signatures.
+
+       * character.c (char_string, string_char): Remove calls to
+       MAYBE_UNIFY_CHAR.  See the discussion starting at
+       http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00433.html
+       for the details.
+
+2012-09-25  Chong Yidong  <cyd@gnu.org>
+
+       * xdisp.c (mode_line_inverse_video): Delete obsolete variable.
 
 2012-09-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * xdisp.c (Qautomatic_redisplay): New constant.
-       (redisplay_internal): Record itself in backtrace_list.
-       (syms_of_xdisp): Define Qautomatic_redisplay.
+       * bytecode.c (exec_byte_code): Signal an error instead of aborting,
+       when encountering an unknown bytecode.
+
+2012-09-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       image.c, indent.c: Use bool for booleans.
+       * dispextern.h (struct image_type): Members valid_p, load, init
+       now return bool, not int.  All uses changed.
+       * image.c: Omit unnecessary static decls.
+       (x_create_bitmap_mask, x_build_heuristic_mask):
+       Return void, not int, since callers don't care about the return value.
+       (x_create_bitmap_mask, define_image_type, valid_image_p)
+       (struct image_keyword, parse_image_spec, image_spec_value)
+       (check_image_size, image_background)
+       (image_background_transparent, x_clear_image_1)
+       (postprocess_image, lookup_image, x_check_image_size)
+       (x_create_x_image_and_pixmap, xbm_image_p)
+       (Create_Pixmap_From_Bitmap_Data, xbm_read_bitmap_data)
+       (xbm_load_image, xbm_file_p, xbm_load, xpm_lookup_color)
+       (init_xpm_functions, xpm_valid_color_symbols_p, xpm_image_p)
+       (xpm_load, xpm_load_image, lookup_rgb_color, lookup_pixel_color)
+       (x_to_xcolors, x_build_heuristic_mask, pbm_image_p, pbm_load)
+       (png_image_p, init_png_functions, png_load_body, png_load)
+       (jpeg_image_p, init_jpeg_functions, jpeg_load_body, jpeg_load)
+       (tiff_image_p, init_tiff_functions, tiff_load, gif_image_p)
+       (init_gif_functions, gif_load, imagemagick_image_p)
+       (imagemagick_load_image, imagemagick_load, svg_image_p)
+       (init_svg_functions, svg_load, svg_load_image, gs_image_p)
+       (gs_load):
+       * nsimage.m (ns_load_image):
+       * nsterm.m (ns_defined_color):
+       * xfaces.c (tty_lookup_color, tty_defined_color, defined_color):
+       * xfns.c (x_defined_color):
+       * xterm.c (x_alloc_lighter_color_for_widget)
+       (x_alloc_nearest_color_1, x_alloc_nearest_color)
+       (x_alloc_lighter_color):
+       * indent.c (disptab_matches_widthtab, current_column)
+       (scan_for_column, string_display_width, indented_beyond_p)
+       (compute_motion, vmotion, Fvertical_motion):
+       Use bool for booleans.
+
+2012-09-24  Chong Yidong  <cyd@gnu.org>
+
+       * chartab.c (Fset_char_table_default): Obsolete function removed.
+
+2012-09-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Move pid_t related decls out of lisp.h.
+       * lisp.h, syswait.h (record_child_status_change, wait_for_termination)
+       (interruptible_wait_for_termination):
+       Move these decls from lisp.h to syswait.h, since they use pid_t.
+       Needed on FreeBSD; see Herbert J. Skuhra in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00571.html>.
+       * callproc.c: Include syswait.h.
+
+       gnutls.c, gtkutil.c: Use bool for boolean.
+       * gnutls.c (gnutls_global_initialized, init_gnutls_functions)
+       (emacs_gnutls_handle_error):
+       * gtkutil.c (xg_check_special_colors, xg_prepare_tooltip)
+       (xg_hide_tooltip, xg_create_frame_widgets)
+       (create_dialog, xg_uses_old_file_dialog)
+       (xg_get_file_with_chooser, xg_get_file_with_selection)
+       (xg_get_file_name, xg_have_tear_offs, create_menus, xg_create_widget)
+       (xg_item_label_same_p, xg_update_menubar)
+       (xg_modify_menubar_widgets, xg_event_is_for_menubar)
+       (xg_ignore_gtk_scrollbar, xg_set_toolkit_scroll_bar_thumb)
+       (xg_event_is_for_scrollbar, xg_pack_tool_bar, xg_make_tool_item)
+       (is_box_type, xg_tool_item_stale_p, xg_update_tool_bar_sizes)
+       (update_frame_tool_bar, free_frame_tool_bar):
+       * gtkutil.c, w32term.c, xterm.c (x_wm_set_size_hint):
+       * nsmenu.m (ns_update_menubar):
+       * nsmenu.m, w32menu.c, xmenu.c (set_frame_menubar):
+       * xfns.c (Fx_show_tip) [USE_GTK]:
+       Use bool for boolean.
+       * gtkutil.c (xg_update_frame_menubar):
+       * xmenu.c (update_frame_menubar):
+       Return void, not int, since caller ignores return value.
+       * gtkutil.c (xg_change_toolbar_position):
+       Return void, not 1.
+
+2012-09-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in (BLOCKINPUT_H): Remove.
+       (SYSSIGNAL_H): New macro.
+       ($(BLD)/alloc.$(O), $(BLD)/atimer.$(O), $(BLD)/buffer.$(O))
+       ($(BLD)/callproc.$(O), $(BLD)/data.$(O), $(BLD)/dired.$(O))
+       ($(BLD)/dispnew.$(O), $(BLD)/editfns.$(O), $(BLD)/emacs.$(O))
+       ($(BLD)/eval.$(O), $(BLD)/fileio.$(O), $(BLD)/floatfns.$(O))
+       ($(BLD)/fns.$(O), $(BLD)/fontset.$(O), $(BLD)/frame.$(O))
+       ($(BLD)/fringe.$(O), $(BLD)/image.$(O), $(BLD)/insdel.$(O))
+       ($(BLD)/keyboard.$(O), $(BLD)/keymap.$(O), $(BLD)/lread.$(O))
+       ($(BLD)/menu.$(O), $(BLD)/w32inevt.$(O), $(BLD)/w32proc.$(O))
+       ($(BLD)/print.$(O), $(BLD)/process.$(O), $(BLD)/ralloc.$(O))
+       ($(BLD)/search.$(O), $(BLD)/sound.$(O), $(BLD)/sysdep.$(O))
+       ($(BLD)/term.$(O), $(BLD)/window.$(O), $(BLD)/xdisp.$(O))
+       ($(BLD)/xfaces.$(O), $(BLD)/w32fns.$(O), $(BLD)/w32menu.$(O))
+       ($(BLD)/w32term.$(O), $(BLD)/w32select.$(O), $(BLD)/w32reg.$(O))
+       ($(BLD)/w32xfns.$(O)): Update dependencies.
+
+2012-09-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * .gdbinit: Set breakpoint on terminate_due_to_signal, not on
+       fatal_error_backtrace.
+
+       * w32proc.c (sys_kill): Undo last change: don't do anything when
+       invoked to deliver SIGABRT to our own process.  This is now
+       handled by emacs_raise.
+
+2012-09-23  Juanma Barranquero  <lekktu@gmail.com>
+
+       * w32term.c (w32_read_socket): Remove leftover reference to
+       interrupt_input_pending.
+
+2012-09-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Do not use SA_NODEFER.
+       Problem reported by Dani Moncayo in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00557.html>.
+       * alloc.c (die):
+       * sysdep.c (emacs_abort): Do not reset signal handler.
+       * emacs.c (terminate_due_to_signal): Reset signal handler here.
+       * sysdep.c (init_signals): Do not use SA_NODEFER.  It wasn't
+       wanted even on POSIXish hosts, and it doesn't work on Windows.
+
+2012-09-23  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_term_init): Call fixup_locale before and after calling
+       gtk_init (Bug#12392).
+
+2012-09-23  Chong Yidong  <cyd@gnu.org>
+
+       * w32.c (w32_delayed_load): Remove LIBRARIES argument; always use
+       Vdynamic_library_alist.
+
+       * gnutls.c (init_gnutls_functions): Caller changed; remove arg.
+       (Fgnutls_available_p): Caller changed.
+
+       * xml.c (init_libxml2_functions, Flibxml_parse_html_region)
+       (Flibxml_parse_xml_region): Likewise.
+
+       * dispextern.h (struct image_type): Remove arg from init function.
+
+       * image.c (Finit_image_library, lookup_image_type)
+       (define_image_type): Remove now-unneeded second arg.
+       (init_xpm_functions, init_png_functions, init_jpeg_functions)
+       (init_tiff_functions, init_gif_functions, init_svg_functions):
+       Arglist and w32_delayed_load calling convention changed.
+       (gs_type): Remove init_gs_functions; there is no such function.
+       (valid_image_p, make_image): Fix caller to lookup_image_type.
+
+2012-09-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify and avoid signal-handling races (Bug#12471).
+       * alloc.c (die):
+       * sysdep.c (emacs_abort) [HAVE_NTGUI]:
+       Avoid recursive loop if there's a fatal error in the function itself.
+       * atimer.c (pending_atimers):
+       * blockinput.h: Don't include "atimer.h"; no longer needed.
+       (interrupt_input_pending): Remove.  All uses removed.
+       pending_signals now counts both atimers and ordinary interrupts.
+       This is less racy than having three separate pending-signal flags.
+       (block_input, unblock_input, totally_unblock_input, unblock_input_to)
+       (input_blocked_p):
+       Rename from their upper-case counterparts BLOCK_INPUT,
+       UNBLOCK_INPUT, TOTALLY_UNBLOCK_INPUT, UNBLOCK_INPUT_TO,
+       INPUT_BLOCKED_P, and turn into functions.  All uses changed.
+       This makes it easier to access volatile variables more accurately.
+       (BLOCK_INPUT_RESIGNAL): Remove.  All uses replaced by unblock_input ().
+       (input_blocked_p): Prefer this to 'interrupt_input_blocked', as
+       that's more reliable if the code is buggy and sets
+       interrupt_input_blocked to a negative value.  All uses changed.
+       * atimer.c (deliver_alarm_signal):
+       Remove.  No need to deliver this to the parent; any thread can
+       handle this signal now.  All uses replaced by underlying handler.
+       * atimer.c (turn_on_atimers):
+       * dispnew.c (handle_window_change_signal):
+       * emacs.c (handle_danger_signal):
+       * keyboard.c (kbd_buffer_get_event):
+       Don't reestablish signal handler; not needed with sigaction.
+       * blockinput.h (UNBLOCK_INPUT_TO, TOTALLY_UNBLOCK_INPUT)
+       (UNBLOCK_INPUT_TO):
+       Rework to avoid unnecessary accesses to volatile variables.
+       (UNBLOCK_INPUT_TO): Now a function.
+       (totally_unblock_input, unblock_input): New decls.
+       * data.c (handle_arith_signal, deliver_arith_signal): Move to sysdep.c
+       (init_data): Remove.  Necessary stuff now done in init_signal.
+       * emacs.c, xdisp.c: Include "atimer.h", since we invoke atimer functions.
+       * emacs.c (handle_fatal_signal, deliver_fatal_signal): Move to sysdep.c.
+       (fatal_error_code): Remove; no longer needed.
+       (terminate_due_to_signal): Rename from fatal_error_backtrace, since
+       it doesn't always backtrace.  All uses changed.  No need to reset
+       signal to default, since sigaction and/or die does that for us now.
+       Use emacs_raise (FOO), not kill (getpid (), FOO).
+       (main): Check more-accurately whether we're dumping.
+       Move fatal-error setup to sysdep.c
+       * floatfns.c: Do not include "syssignal.h"; no longer needed.
+       * gtkutil.c (xg_get_file_name, xg_get_font):
+       Remove no-longer-needed signal-mask manipulation.
+       * keyboard.c, process.c (POLL_FOR_INPUT):
+       Don't depend on USE_ASYNC_EVENTS, a symbol that is never defined.
+       * keyboard.c (read_avail_input): Remove.
+       All uses replaced by gobble_input.
+       (Ftop_level): Use TOTALLY_UNBLOCK_INPUT rather than open code.
+       (kbd_buffer_store_event_hold, gobble_input):
+       (record_asynch_buffer_change) [USABLE_SIGIO]:
+       (store_user_signal_events):
+       No need to mess with signal mask.
+       (gobble_input): If blocking input and there are terminals, simply
+       set pending_signals to 1 and return.  All hooks changed to not
+       worry about whether input is blocked.
+       (process_pending_signals): Clear pending_signals before processing
+       them, in case a signal comes in while we're processing.
+       By convention callers now test pending_signals before calling us.
+       (UNBLOCK_INPUT_TO, unblock_input, totally_unblock_input):
+       New functions, to support changes to blockinput.h.
+       (handle_input_available_signal): Now extern.
+       (reinvoke_input_signal): Remove.  All uses replaced by
+       handle_async_input.
+       (quit_count): Now volatile, since a signal handler uses it.
+       (handle_interrupt): Now takes bool IN_SIGNAL_HANDLER as arg.
+       All callers changed.  Block SIGINT only if not already blocked.
+       Clear sigmask reliably, even if Fsignal returns, which it can.
+       Omit unnecessary accesses to volatile var.
+       (quit_throw_to_read_char): No need to restore sigmask.
+       * keyboard.c (gobble_input, handle_user_signal):
+       * process.c (wait_reading_process_output):
+       Call signal-handling code rather than killing ourselves.
+       * lisp.h: Include <float.h>, for...
+       (IEEE_FLOATING_POINT): New macro, moved here to avoid duplication.
+       (pending_signals): Now volatile.
+       (syms_of_data): Now const if IEEE floating point.
+       (handle_input_available_signal) [USABLE_SIGIO]:
+       (terminate_due_to_signal, record_child_status_change): New decls.
+       * process.c (create_process): Avoid disaster if memory is exhausted
+       while we're processing a vfork, by tightening the critical section
+       around the vfork.
+       (send_process_frame, process_sent_to, handle_pipe_signal)
+       (deliver_pipe_signal): Remove.  No longer needed, as Emacs now
+       ignores SIGPIPE.
+       (send_process): No need for setjmp/longjmp any more, since the
+       SIGPIPE stuff is now gone.  Instead, report an error if errno
+       is EPIPE.
+       (record_child_status_change): Now extern.  PID and W are now args.
+       Return void, not bool.  All callers changed.
+       * sysdep.c (wait_debugging) [(BSD_SYSTEM || HPUX) && !defined (__GNU__)]:
+       Remove.  All uses removed.  This bug should be fixed now in a
+       different way.
+       (wait_for_termination_1): Use waitpid rather than sigsuspend,
+       and record the child status change directly.  This avoids the
+       need to futz with the signal mask.
+       (process_fatal_action): Move here from emacs.c.
+       (emacs_sigaction_flags): New function, containing
+       much of what used to be in emacs_sigaction_init.
+       (emacs_sigaction_init): Use it.  Block nonfatal system signals that are
+       caught by emacs, to make races less likely.
+       (deliver_process_signal): Rename from handle_on_main_thread.
+       All uses changed.
+       (BACKTRACE_LIMIT_MAX): Now at top level.
+       (thread_backtrace_buffer, threadback_backtrace_pointers):
+       New static vars.
+       (deliver_thread_signal, deliver_fatal_thread_signal):
+       New functions, for more-accurate delivery of thread-specific signals.
+       (handle_fatal_signal, deliver_fatal_signal): Move here from emacs.c.
+       (deliver_arith_signal): Handle in this thread, not
+       in the main thread, since it's triggered by this thread.
+       (maybe_fatal_sig): New function.
+       (init_signals): New arg DUMPING so that we can be more accurate
+       about whether we're dumping.  Caller changed.
+       Treat thread-specific signals differently from process-general signals.
+       Block all signals while handling fatal error; that's safer.
+       xsignal from SIGFPE only on non-IEEE hosts, treating it as fatal
+       on IEEE hosts.
+       When batch, ignore SIGHUP, SIGINT, SIGTERM if they were already ignored.
+       Ignore SIGPIPE unless batch.
+       (emacs_backtrace): Output backtrace for the appropriate thread,
+       which is not necessarily the main thread.
+       * syssignal.h: Include <stdbool.h>.
+       (emacs_raise): New macro.
+       * xterm.c (x_connection_signal): Remove; no longer needed
+       now that we use sigaction.
+       (x_connection_closed): No need to mess with sigmask now.
+       (x_initialize): No need to reset SIGPIPE handler here, since
+       init_signals does this for us now.
+
+2012-09-23  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (ns_dumpglyphs_image): dr is a new rect to draw image into,
+       background rect may be larger (Bug#12245).
+
+2012-09-23  Chong Yidong  <cyd@gnu.org>
+
+       * keyboard.c (timer_check): Avoid quitting during Fcopy_sequence.
+
+2012-09-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * .gdbinit: Just stop at fatal_error_backtrace.
+       See Stefan Monnier's request in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00549.html>.
+       Remove no-longer-used query of system type.
+
+2012-09-22  Chong Yidong  <cyd@gnu.org>
+
+       * search.c (Freplace_match): Doc fix (Bug#12325).
+
+       * minibuf.c (Finternal_complete_buffer): Doc fix (Bug#12391).
+
+       * editfns.c (Fline_beginning_position): Doc fix (Bug#12416).
+       (Fline_end_position): Doc fix.
+
+       * cmds.c (Fforward_char, Fbackward_char): Doc fix (Bug#12414).
+
+2012-09-22  Chong Yidong  <cyd@gnu.org>
+
+       * dispextern.h (struct image_type): Add new slot, storing a type
+       initialization function.
+
+       * image.c (define_image_type): Call the image initializer function
+       if it is defined.  Arguments and return value changed.
+       (valid_image_p, make_image): Callers changed.
+       (xbm_type, xpm_type, pbm_type, png_type, jpeg_type, tiff_type)
+       (gif_type, imagemagick_type, svg_type, gs_type):
+       Add initialization functions.
+       (Finit_image_library): Call lookup_image_type.
+       (CHECK_LIB_AVAILABLE): Macro deleted.
+       (lookup_image_type): Call define_image_type here, rather than via
+       Finit_image_library, and without using CHECK_LIB_AVAILABLE.
+       (syms_of_image): Move define_image_type calls for xbm_type and
+       pbm_type to lookup_image_type.
+
+2012-09-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * keyboard.c (timer_check_2): Move calculation of 'timers' and
+       'idle_timers' from here ...
+       (timer_check): ... to here.  Use Fcopy_sequence to copy the timer
+       lists, to avoid infloops when the timer does something stupid,
+       like reinvoke itself with the same or smaller time-out.
+       (Bug#12447)
+
+2012-09-22  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fsplit_window_internal): Handle only Qt value of
+       Vwindow_combination_limit separately.
+       (Qtemp_buffer_resize): New symbol.
+       (Vwindow_combination_limit): New default value.
+       Rewrite doc-string.
 
-       * profiler.c: Remove filtering functionality.
-       (is_in_trace, Qgc): Remove vars.
-       (make_log, record_backtrace, Fsample_profiler_log):
-       Rewrite, using Elisp hash-tables.
-       (approximate_median, evict_lower_half): New functions.
-       (cpu_log): Rename from sample_log.
-       (cpu_gc_count): New var.
-       (Fsample_profiler_reset, Fmemory_profiler_reset): Remove.
-       (sigprof_handler): Add count to cpu_gc_count during GC, detected via
-       backtrace_list.
-       (block_sigprof, unblock_sigprof): Remove.
-       (gc_probe, mark_profiler): Remove functions.
-       (syms_of_profiler): Staticpro cpu_log and memory_log.
-
-       * lisp.h (SXHASH_COMBINE): Move back to...
-       * fns.c (SXHASH_COMBINE): ...here.
-
-       * alloc.c (Fgarbage_collect): Record itself in backtrace_list.
-       Don't set is_in_trace any more.  Don't call mark_profiler.
-       Only call gc_probe for the memory profiler.
-       (syms_of_alloc): Define Qautomatic_gc.
+2012-09-22  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (next_overlay_string): Initialize it->end_charpos for
+       the new overlay string.  (Bug#10159)
+
+2012-09-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * emacs.c (shut_down_emacs): Don't assume stderr is buffered,
+       or that fprintf is async-signal-safe.  POSIX doesn't require
+       either assumption.
+
+2012-09-22  Chong Yidong  <cyd@gnu.org>
+
+       * buffer.c (Fset_buffer_modified_p): Handle indirect buffers
+       (Bug#8207).
+
+2012-09-22  Kenichi Handa  <handa@gnu.org>
+
+       * composite.c (composition_reseat_it): Handle the case that a
+       grapheme cluster is not covered by a single font (Bug#12352).
+
+2012-09-21  Chong Yidong  <cyd@gnu.org>
+
+       * image.c (define_image_type): Avoid adding duplicate types to
+       image_types (Bug#12463).  Suggested by Jörg Walter.
+
+2012-09-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * unexmacosx.c: Define LC_DATA_IN_CODE if not defined.
+       (print_load_command_name): Add case LC_DATA_IN_CODE.
+       (dump_it) [LC_DATA_IN_CODE]: Call copy_linkedit_data.
+
+2012-09-21  Glenn Morris  <rgm@gnu.org>
+
+       * eval.c (Frun_hook_with_args_until_success)
+       (Frun_hook_with_args_until_failure): Doc fixes.  (Bug#12393)
+
+2012-09-21  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * fileio.c (Ffile_selinux_context): Only call freecon when
+       lgetfilecon succeeded.
+       (Fset_file_selinux_context): Likewise.  (Bug#12444)
+
+2012-09-21  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (try_window_reusing_current_matrix): Under bidi
+       reordering, locate the cursor by calling set_cursor_from_row; if
+       that fails, clear the desired glyph matrix before returning a
+       failure indication to the caller.  Fixes leaving garbled display
+       when fast scrolling with a down-key.  (Bug#12403)
+       (compute_stop_pos_backwards): Fix a typo that caused crashes while
+       scrolling through multibyte text.
+
+2012-09-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * alloc.c (mark_object) <PVEC_WINDOW>: Mark prev/next_buffers *after*
+       calling mark_vectorlike since that's the one that marks the window.
+       (mark_discard_killed_buffers): Mark the final cdr.
+       * window.h (struct window): Move prev/next_buffers to the
+       non-standard fields.
+       * window.c (make_window): Initialize prev/next_buffers manually.
+
+2012-09-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Omit unused arg EXPECTED from socket hooks.
+       * keyboard.c (gobble_input, read_avail_input, tty_read_avail_input):
+       * nsterm.m (ns_term_init):
+       * termhooks.h (struct terminal.read_socket_hook):
+       * w32inevt.c (w32_console_read_socket):
+       * w32term.c (w32_read_socket):
+       * xterm.c (XTread_socket):
+       Omit unused arg EXPECTED.  All callers changed.
+       (store_user_signal_events): Return void, not int, since callers no
+       longer care about the return value.  All uses changed.
+
+2012-09-20  Juanma Barranquero  <lekktu@gmail.com>
+
+       * w32gui.h (XParseGeometry): Do not declare.
+
+2012-09-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * w32inevt.c (w32_console_read_socket): Return -1 on failure, not 0.
+       Ignore 'expected'. See Eli Zaretskii in
+       <http://bugs.gnu.org/12471#8> (last line).
+
+       * frame.c (read_integer): Remove.  All uses replaced by strtol/strtoul.
+       (XParseGeometry): Now static.  Substitute extremal values for
+       values that are out of range.
+
+2012-09-19  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * w32xfns.c (read_integer, XParseGeometry): Move to frame.c.
+
+       * nsfns.m (XParseGeometry): Remove.
+       (Fx_create_frame): Call x_set_offset to correctly interpret
+       top_pos in geometry.
+
+       * frame.c (read_integer, XParseGeometry): Move from w32xfns.c.
+       (Fx_parse_geometry): If there is a space in string, call
+       Qns_parse_geometry, otherwise do as on other terms (Bug#12368).
+
+2012-09-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * search.c (scan_buffer): Use character positions in calls to
+       region_cache_forward and region_cache_backward, not byte
+       positions.  (Bug#12196)
+
+       * w32term.c (w32_read_socket): Set pending_signals to 1, like
+       xterm.c does.  Reported by Daniel Colascione <dancol@dancol.org>.
+
+       * ralloc.c (r_alloc_init) [!SYSTEM_MALLOC]: Initialize
+       __malloc_extra_blocks to 32 instead of 64, like alloc.c did in
+       emacs_blocked_malloc, now deleted.
+
+2012-09-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Remove no-longer-needed Solaris 2.4 vfork bug workaround.
+       The workaround was for improving performance on Solaris 2.4, but
+       is getting in the way now.  Emacs will still work if someone is
+       still running Solaris 2.4 in a museum somewhere; Sun dropped
+       support for Solaris 2.4 in 2003.
+       * callproc.c (Fcall_process) [HAVE_WORKING_VFORK]:
+       * process.c (create_process) [HAVE_WORKING_VFORK]:
+       Omit now-unnecessary workaround for the Solaris 2.4 vfork bug,
+       since Emacs no longer uses vfork on that platform.
+
+2012-09-17  Glenn Morris  <rgm@gnu.org>
+
+       * emacs.c: Use COPYRIGHT.
+
+2012-09-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Remove configure's --without-sync-input option (Bug#12450).
+       When auditing signal-handling in preparation for cleaning it up,
+       I found that SYNC_INPUT has race conditions and would be a real
+       pain to fix.  Since it's an undocumented and deprecated
+       configure-time option, now seems like a good time to remove it.
+       Also see <http://bugs.gnu.org/11080#16>.
+       * alloc.c (_bytes_used, __malloc_extra_blocks, _malloc_internal)
+       (_free_internal) [!DOUG_LEA_MALLOC]: Remove decls.
+       (alloc_mutex) [!SYSTEM_MALLOC && !SYNC_INPUT && HAVE_PTHREAD]:
+       (malloc_hysteresis):
+       (check_depth) [XMALLOC_OVERRUN_CHECK]:
+       (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT):
+       (__malloc_hook, __realloc_hook, __free_hook, BYTES_USED)
+       (dont_register_blocks, bytes_used_when_reconsidered)
+       (bytes_used_when_full, emacs_blocked_free, emacs_blocked_malloc)
+       (emacs_blocked_realloc, reset_malloc_hooks, uninterrupt_malloc):
+       [!SYSTEM_MALLOC && !SYNC_INPUT]:
+       Remove. All uses removed.
+       (MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): Use a different
+       implementation, one that depends on whether the new macro
+       XMALLOC_BLOCK_INPUT_CHECK is defined, not on whether SYNC_INPUT
+       is defined.
+       * atimer.c (run_timers, handle_alarm_signal):
+       * keyboard.c (pending_signal, poll_for_input_1, poll_for_input)
+       (handle_async_input, process_pending_signals)
+       (handle_input_available_signal, init_keyboard):
+       * nsterm.m (ns_read_socket):
+       * process.c (wait_reading_process_output):
+       * regex.c (immediate_quit, IMMEDIATE_QUIT_CHECK):
+       * sysdep.c (emacs_sigaction_init) [SA_RESTART]:
+       (emacs_write):
+       * xterm.c (XTread_socket):
+       Assume SYNC_INPUT.
+       * conf_post.h (SA_RESTART) [IRIX6_5]: Do not #undef.
+       * eval.c (handling_signal): Remove.  All uses removed.
+       * lisp.h (ELSE_PENDING_SIGNALS): Remove.
+       All uses replaced with the SYNC_INPUT version.
+       (reset_malloc_hooks, uninterrupt_malloc, handling_signal):
+       Remove decls.
+       * sysdep.c, syssignal.h (main_thread) [FORWARD_SIGNAL_TO_MAIN_THREAD]:
+       Now static.
+
+       * font.c (Ffont_shape_gstring): Remove unused local.
+
+2012-09-16  Glenn Morris  <rgm@gnu.org>
+
+       * Makefile.in (clean): No longer run nextstep's clean.
+
+       * Makefile.in (ns_appdir, ns_appbindir, ns_appsrc): Remove variables.
+       (ns_frag): Remove.
+       (ns-app): Move here from ns.mk, and simplify.
+       (clean): Simplify nextstep entry.
+       * ns.mk: Remove file.
+
+2012-09-17  Kenichi Handa  <handa@gnu.org>
+
+       * font.c (Ffont_shape_gstring): Fix previous change; GLYPHs may
+       not covert the last few charactes.
+
+2012-09-16  Kenichi Handa  <handa@gnu.org>
+
+       * font.c (Ffont_shape_gstring): Don't adjust grapheme cluster
+       here, but just check the validity of glyphs in the glyph-string.
+
+2012-09-16  Martin Rudalics  <rudalics@gmx.at>
+
+       * window.c (Fwindow_parameter, Fset_window_parameter):
+       Accept any window as argument (Bug#12452).
+
+2012-09-16  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsfns.m (Fx_open_connection): Move initialization of ns_*_types
+       to ns_term_init to avoid memory leak.
+
+       * nsterm.m (ns_update_begin): Initialize bp after lcokFocus, use
+       explicit retain/release.
+       (ns_term_init): Only allow one display.  Initialize outerpool and
+       ns_*_types.
+
+2012-09-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port _setjmp fix to POSIXish hosts as well as Microsoft.
+       * image.c (_setjmp) [!HAVE__SETJMP]: Restore definition, as
+       it's needed on POSIXish hosts that lack _setjmp.  Attempt to solve
+       the Microsoft problem in a different way, by altering ../nt/config.nt.
+
+2012-09-15  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32xfns.c:
+       * w32uniscribe.c:
+       * w32term.c:
+       * w32select.c:
+       * w32reg.c:
+       * w32proc.c:
+       * w32menu.c:
+       * w32inevt.c:
+       * w32heap.c:
+       * w32font.c:
+       * w32fns.c:
+       * w32console.c:
+       * w32.c:
+       * w16select.c: Remove inclusion of setjmp.h, as it is now included
+       by lisp.h.  This completes removal of setjmp.h inclusion
+       erroneously announced in the previous commit.  (Bug#12446)
+
+       * lisp.h [!HAVE__SETJMP, !HAVE_SIGSETJMP]: Make the commentary
+       more accurate.
+
+       * image.c (_setjmp) [!HAVE__SETJMP]: Define only if 'setjmp' is
+       not defined as a macro.  The latter happens on MS-Windows.
+       (Bug#12446)
+
+2012-09-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port better to POSIX hosts lacking _setjmp (Bug#12446).
+       * lisp.h: Include <setjmp.h> here, since we use its symbols here.
+       Some instances of '#include <setjmp.h>' removed, if the
+       only reason for the instance was because "lisp.h" was included.
+       (sys_jmp_buf, sys_setjmp, sys_longjmp): New symbols.
+       Unless otherwise specified, replace all uses of jmp_buf, _setjmp,
+       and _longjmp with the new symbols.  Emacs already uses _setjmp if
+       available, so this change affects only POSIXish hosts that have
+       sigsetjmp but not _setjmp, such as some versions of Solaris and
+       Unixware.  (Also, POSIX-2008 marks _setjmp as obsolescent.)
+       * image.c (_setjmp, _longjmp) [HAVE_PNG && !HAVE__SETJMP]: New macros.
+       (png_load_body) [HAVE_PNG]:
+       (PNG_LONGJMP) [HAVE_PNG && PNG_LIBPNG_VER < 10500]:
+       (PNG_JMPBUF) [HAVE_PNG && PNG_LIBPNG_VER >= 10500]:
+       Use _setjmp and _longjmp rather than sys_setjmp and sys_longjmp,
+       since PNG requires jmp_buf.  This is the only exception to the
+       general rule that we now use sys_setjmp and sys_longjmp.
+       This exception is OK since this code does not change the signal
+       mask or longjmp out of a signal handler.
+
+2012-09-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * alloc.c [!SYSTEM_MALLOC && !SYNC_INPUT && HAVE_PTHREAD]:
+       Include "syssignal.h", for 'main_thread'.
+
+2012-09-14  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Avoid out-of-range marker position (Bug#12426).
+       * insdel.c (replace_range, replace_range_2):
+       Adjust markers before overlays, as suggested by comments.
+       (insert_1_both, insert_from_buffer_1, adjust_after_replace):
+       Remove redundant check before calling offset_intervals.
+
+2012-09-14  Martin Rudalics  <rudalics@gmx.at>
+
+       * xdisp.c (Fformat_mode_line): Unconditionally save/restore
+       current buffer (Bug#12387).
+
+2012-09-14  Juanma Barranquero  <lekktu@gmail.com>
+
+       * makefile.w32-in ($(BLD)/alloc.$(O)): Update dependencies.
+
+2012-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use a more backwards-compatible timer format (Bug#12430).
+       * keyboard.c (decode_timer): Get PSECS from the 8th (origin-0)
+       vector element, not from the 4th, since PSECS is now at the end.
+       (Fcurrent_idle_time): Doc fix.
+
+2012-09-13  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Function to mark objects and remove killed buffers at once.
+       * alloc.c (discard_killed_buffers): Rename to ...
+       (mark_discard_killed buffers) ... new name.  Add marking
+       of remaining objects.  Fix comment.  Adjust users.
+       (mark_object): Do not touch frame buffer lists here.
+       * frame.c (delete_frame): Reset frame buffer lists here.
+
+2012-09-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Better workaround for GNOME bug when --enable-gcc-warnings.
+       * emacsgtkfixed.c (G_STATIC_ASSERT): Remove, undoing last change.
+       Instead, disable -Wunused-local-typedefs.  See Dmitry Antipov in
+       <http://lists.gnu.org/archive/html/emacs-devel/2012-09/msg00335.html>.
+
+       Simplify SIGIO usage (Bug#12408).
+       The code that dealt with SIGIO was crufty and confusing, e.g., it
+       played tricks like "#undef SIGIO" but these tricks were not used
+       consistently.  Simplify mostly by not #undeffing standard symbols,
+       e.g., use "defined USABLE_SIGIO" (our symbol, which we can define
+       or not as we please) rather than "defined SIGIO" (standard symbol
+       that we probably shouldn't #undef).
+       * conf_post.h [USG5_4]: Do not include <sys/wait.h> here.
+       Modules that need it can include it.
+       [USG5_4 && emacs]: Likewise, do not include the streams stuff here.
+       * dispextern.h (ignore_sigio): New decl.
+       * emacs.c (shut_down_emacs): Invoke unrequest_sigio
+       unconditionally, since it's now a no-op if !USABLE_SIGIO.
+       * emacs.c (shut_down_emacs):
+       * keyboard.c (kbd_buffer_store_event_hold):
+       Use ignore_sigio rather than invoking 'signal' directly.
+       * keyboard.c (USABLE_FIONREAD && USG5_4): Include <sys/filio.h>,
+       for FIONREAD.
+       (FIONREAD, SIGIO): Do not #undef.
+       (tty_read_avail_input): Use #error rather than a syntax error.
+       * process.c [USG5_4]: Include <sys/stream.h> and <sys/stropts.h>,
+       for I_PIPE, used by SETUP_SLAVE_PTY.
+       (DATAGRAM_SOCKETS): Simplify defn, based on USABLE_FIONREAD.
+       * sysdep.c (croak): Remove; no longer needed.  This bit of
+       temporary code, with Fred N. Fish's comment that it's temporary,
+       has been in Emacs since at least 1992!
+       (init_sigio, reset_sigio, request_sigio, unrequest_sigio):
+       Arrange for them to be no-ops in all cases when ! USABLE_SIGIO.
+       * syssignal.h (croak): Remove decl.
+       (SIGIO, SIGPOO, SIGAIO, SIGPTY): Do not #undef; that's too fragile.
+       * systty.h [!NO_TERMIO]: Do not include <termio.h>; no longer needed
+       now that we're termios-only.
+       (FIONREAD, ASYNC) [BROKEN_FIONREAD]: Do not #undef.
+       * term.c (dissociate_if_controlling_tty): Use #error rather than
+       a run-time error.
+
+       Work around GCC and GNOME bugs when --enable-gcc-warnings.
+       * emacsgtkfixed.c (G_STATIC_ASSERT): Redefine to use 'verify',
+       to work around GNOME bug 683906.
+       * image.c (jpeg_load_body) [HAVE_JPEG && lint]: Pacify gcc -Wclobber.
+       (struct my_jpeg_error_mgr) [HAVE_JPEG && lint]: New member fp.
+       This works around GCC bug 54561.
+
+2012-09-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       More fixes for 'volatile' and setjmp/longjmp.
+       * eval.c (Fdefvar, Fcondition_case): Remove unnecessary 'volatile's.
+       * image.c (struct png_load_context) [HAVE_PNG]: New type.
+       (png_load_body) [HAVE_PNG]:
+       (jpeg_load_body) [HAVE_JPEG]:
+       New function, with most of the old parent function's body.
+       (png_load) [HAVE_PNG]:
+       (jpeg_load) [HAVE_JPEG]:
+       Invoke the new function, to avoid longjmp munging our locals.
+       (struct my_jpeg_error_mgr) [HAVE_JPEG]: New members cinfo, failure_code.
+       (my_error_exit) [HAVE_JPEG]: Don't trust 'setjmp' to return 2 when
+       longjmp is passed 2, as the C standard doesn't guarantee this.
+       Instead, store the failure code into mgr->failure_code.
+
+2012-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * keyboard.c (read_char, requeued_events_pending_p, Finput_pending_p)
+       (Fdiscard_input, quit_throw_to_read_char, init_keyboard)
+       (syms_of_keyboard): Remove support for unread-command-char.
+
+2012-09-12  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c (sys_kill): If PID is our process ID and the signal is
+       SIGABRT, call emacs_abort.  Avoids silently exiting upon assertion
+       violation.  (Bug#12426)
+
+2012-09-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * image.c (jpeg_memory_src): Don't assume string len fits in unsigned.
+
+2012-09-12  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * eval.c: Add `inhibit-debugger'.
+       (Qinhibit_debugger): New symbol.
+       (call_debugger): Bind it instead of Qdebug_on_error.
+       (maybe_call_debugger): Test Vinhibit_debugger.
+       (syms_of_eval): Define inhibit-debugger.
+       * xdisp.c (set_message): Don't bind Qinhibit_debug_on_message.
+       (syms_of_xdisp): Remove inhibit-debug-on-message.
+
+2012-09-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Avoid _setjmp/_longjmp problems with local nonvolatile variables.
+       If a nonvolatile local variable is written before a _longjmp to
+       the frame containing the variable, and is read after the _longjmp,
+       the value read is indeterminate.  Some local variables of type
+       'struct handler' and 'struct catchtag' are used in this way, so
+       mark each of their slots as volatile if the slot can be set before
+       _longjmp and read afterwards.
+       * lisp.h (struct handler): var and chosen_clause are now volatile.
+       (struct catchtag): val, next, and pdlcount are now volatile.
+
+       * bidi.c (bidi_push_it, bidi_pop_it):
+       * fns.c (copy_hash_table):
+       * image.c (define_image_type):
+       * keyboard.c (kbd_buffer_store_event_hold):
+       * process.c (Fprocess_send_eof):
+       * xfaces.c (x_create_gc) [HAVE_NS]:
+       * xgselect.c (xg_select):
+       Prefer assignment to memcpy when either will do.
+
+       * alloc.c (discard_killed_buffers): Tune and simplify a bit.
+       Use pointer-to-a-pointer to simplify and avoid a NILP check each
+       time an item is removed.  No need to mark this function 'inline';
+       the compiler knows better than we do.
+
+2012-09-11  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (ns_judge_scroll_bars): Pass NO to updateFrameSize.
+       (updateFrameSize:): Add delay parameter to updateFrameSize, send it
+       to change_frame_size (Bug#12388).
+       (windowDidResize:): Pass YES to updateFrameSize.
+
+       * nsterm.h: Add delay parameter to updateFrameSize.
+
+2012-09-11  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Discard killed buffers from deleted window and frame objects.
+       This reduces an amount of references to killed buffers and
+       helps GC to reclaim them faster.
+       * alloc.c (discard_killed_buffers): New function.
+       (mark_object): Use it for deleted windows and frames.
+       (mark_object): If symbol's value is set up for a killed buffer
+       or deleted frame, restore it's global binding.
+       * data.c (swap_in_global_binding): Add GC notice.
+       (swap_in_symval_forwarding): Use convenient set_blv_where.
+       * window.c (wset_next_buffers, wset_prev_buffers): Move ...
+       * window.h: ... to here.
+
+2012-09-11  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Convenient macro to check whether the buffer is live.
+       * buffer.h (BUFFER_LIVE_P): New macro.
+       * alloc.c, buffer.c, editfns.c, insdel.c, lread.c, marker.c:
+       * minibuf.c, print.c, process.c, window.c, xdisp.c: Use it.
+
+2012-09-11  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
+
+       * xdisp.c (right_overwritten, right_overwriting): Also handle gstring
+       composition cases (Bug#12364).
+
+       * xterm.c (x_draw_glyph_string): Avoid overwriting inverted left
+       overhang of succeeding glyphs overlapping box cursor.
+
+       * w32term.c (x_draw_glyph_string): Likewise.
+
+2012-09-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Simplify, document, and port floating-point (Bug#12381).
+       The porting part of this patch fixes bugs on non-IEEE platforms
+       with frexp, ldexp, logb.
+       * data.c, lisp.h (Qdomain_error, Qsingularity_error, Qunderflow_error):
+       Now static.
+       * floatfns.c: Simplify discussion of functions that Emacs doesn't
+       support, by removing commented-out code and briefly listing the
+       C89 functions excluded.  The commented-out stuff was confusing
+       maintenance, e.g., we thought we needed cbrt but it was commented out.
+       (logb): Remove decl; no longer needed.
+       (isfinite): New macro, if not already supplied.
+       (isnan): Don't replace any existing macro.
+       (Ffrexp, Fldexp): Define even if !HAVE_COPYSIGN, as frexp and ldexp
+       are present on all C89 platforms.
+       (Ffrexp): Do not special-case zero, as frexp does the right thing
+       for that case.
+       (Flogb): Do not use logb, as it doesn't have the desired meaning
+       on hosts that use non-base-2 floating point.  Instead, stick with
+       frexp, which is C89 anyway.  Do not pass an infinity or a NaN to
+       frexp, to avoid getting an unspecified result.
+
+       * xdisp.c (Qinhibit_debug_on_message): Now static.
+
+2012-09-10  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (ns_update_begin): Set clip path to whole view by using
+       NSBezierPath (Bug#12131).
+
+2012-09-10  Chong Yidong  <cyd@gnu.org>
+
+       * fns.c (Fdelq, Fdelete): Doc fix.
+
+2012-09-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * lisp.h (XSETINT, XSETCONS, XSETVECTOR, XSETSTRING, XSETSYMBOL)
+       (XSETFLOAT, XSETMISC): Parenthesize macro bodies.
+
+2012-09-09  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lisp.h (make_lisp_ptr): New macro to replace XSET.
+       (XSETCONS, XSETVECTOR, XSETSTRING, XSETSYMBOL, XSETFLOAT, XSETMISC):
+       Use it.
+
+2012-09-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * fringe.c (draw_fringe_bitmap_1): Don't reduce the width of the
+       left fringe if the window has a left margin.  This avoids leaving
+       traces of the cursor because its leftmost pixel is not drawn over.
+
+       * dispnew.c (update_window_line): When the left margin area of a
+       screen line is updated, set the redraw_fringe_bitmaps_p flag of
+       that screen line.  (Bug#12277)
+
+2012-09-09  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Assume C89 or later for math functions (Bug#12381).
+       This simplifies the code, and makes it a bit smaller and faster,
+       and (most important) makes it easier to clean up signal handling
+       since we can stop worring about floating-point exceptions in
+       library code.  That was a problem before C89, but the problem
+       went away many years ago on all practical Emacs targets.
+       * data.c, image.c, lread.c, print.c:
+       Don't include <math.h>; no longer needed.
+       * data.c, floatfns.c (IEEE_FLOATING_POINT): Don't worry that it
+       might be autoconfigured, as that never happens.
+       * data.c (fmod):
+       * doprnt.c (DBL_MAX_10_EXP):
+       * print.c (DBL_DIG):
+       Remove.  C89 or later always defines these.
+       * floatfns.c (HAVE_MATHERR, FLOAT_CHECK_ERRNO, FLOAT_CHECK_DOMAIN)
+       (in_float, float_error_arg, float_error_arg2, float_error_fn_name)
+       (arith_error, domain_error, domain_error2):
+       Remove all this pre-C89 cruft.  Do not include <errno.h> as that's
+       no longer needed -- we simply return what C returns.  All uses removed.
+       (IN_FLOAT, IN_FLOAT2): Remove.  All uses replaced with
+       the wrapped code.
+       (FLOAT_TO_INT, FLOAT_TO_INT2, range_error, range_error2):
+       Remove.  All uses expanded, as these macros are no longer used
+       more than once and are now more trouble than they're worth.
+       (Ftan): Use tan, not sin / cos.
+       (Flogb): Assume C89 frexp.
+       (fmod_float): Assume C89 fmod.
+       (matherr) [HAVE_MATHERR]: Remove; no longer needed.
+       (init_floatfns): Remove.  All uses removed.
+
+2012-09-08  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (ns_draw_fringe_bitmap, ns_dumpglyphs_image): Take back
+       compositeToPoint for OSX < 10.6 (Bug#12390).
+
+2012-09-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * floatfns.c (Ftan): Use tan (x), not (sin (x) / cos (x)).
+       This produces more-accurate results.
+
+2012-09-08  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (updateFrameSize): Call setFrame: on the view when size
+       changes (Bug#12088).
+
+2012-09-08  Chong Yidong  <cyd@gnu.org>
+
+       * syntax.c (Fstring_to_syntax): Doc fix.
+
+2012-09-08  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (ns_clip_to_row): Remove code that deals with drawing fringe
+       in the internal border.
+       (x_set_window_size): Remove static variables and their usage.
+       (ns_redraw_scroll_bars): Fix NSTRACE arg.
+       (ns_after_update_window_line, ns_draw_fringe_bitmap):
+       Remove fringe/internal border adjustment (Bug#11052).
+       (ns_draw_fringe_bitmap): Make code more like other terms (xterm.c).
+       (ns_draw_window_cursor): Remove fringe/internal border adjustment.
+       (ns_fix_rect_ibw): Remove.
+       (ns_get_glyph_string_clip_rect): Remove call to ns_fix_rect_ibw.
+       (ns_dumpglyphs_box_or_relief): Ditto.
+       (ns_maybe_dumpglyphs_background): Remove fringe/internal border
+       adjustment.
+       (ns_dumpglyphs_image): Ditto.
+       (ns_dumpglyphs_stretch): Fix coding style.  Remove fringe/internal
+       border adjustment.
+       (ns_set_vertical_scroll_bar): Remove variables barOnVeryLeft/Right and
+       their usage.  Add fringe_extended_p and its use as in other terms.
+       (ns_judge_scroll_bars): Code style fix.  Call updateFrameSize if
+       scroll bar was removed.
+       (updateFrameSize): New function.
+       (windowDidResize): Move code to updateFrameSize and call it.
+
+       * nsterm.h (EmacsView): Add updateFrameSize.
+
+2012-09-07  Chong Yidong  <cyd@gnu.org>
+
+       * textprop.c (Fget_text_property): Minor doc fix (Bug#12323).
+
+       * data.c (Flocal_variable_if_set_p): Doc fix (Bug#10713).
+
+2012-09-07  Paul Eggert  <eggert@cs.ucla.edu>
+
+       More signal-handler cleanup (Bug#12327).
+       * emacs.c (main): Convert three 'signal' calls to 'sigaction' calls.
+       Problem introduced when merging patches.  Noted by Eli Zaretskii in
+       <http://bugs.gnu.org/12327#67>.
+       * floatfns.c: Comment fix.
+       * lisp.h (force_auto_save_soon): Declare regardless of SIGDANGER.
+       SIGDANGER might not be in scope so "#ifdef SIGDANGER" is not right,
+       and anyway the declaration is harmless even if SIGDANGER is not defined.
+       * syssignal.h (SIGIO): Also #undef if (! defined FIONREAD ||
+       defined BROKEN_FIONREAD).  systty.h formerly did this, but other
+       source files not surprisingly expected syssignal.h to define, or
+       not define, SIGIO, and it's cleaner to do it that way, for consistency.
+       Include <sys/ioctl.h>, for FIONREAD.
+       * systty.h (SIGIO): Do not #undef here; it's now syssignal.h's job.
+       This eliminates a problem whereby other files mysteriously had
+       to include "syssignal.h" before including "systty.h" if they
+       wanted to use "#ifdef SIGIO".
+
+2012-09-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32proc.c (sigaction): New function, emulates Posix 'sigaction'.
+
+       * w32.c (sigemptyset): Empty the set.
+       (sigsetmask, sigmask, sigblock, sigunblock): Remove unused functions.
+
+       * 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.
+       * atimer.h: Include <stdbool.h>.
+
+2012-08-22  Dan Nicolaescu  <dann@gnu.org>
+
+       * frame.h (FRAME_W32_P, FRAME_MSDOS_P, FRAME_NS_P): Change to
+       compile time tests instead of run time tests on systems that do
+       not use them.
+       (FRAME_MAC_P): Remove leftover from deleted code.
+       * frame.c (syms_of_frame): Remove leftover from deleted code.
+
+2012-08-22  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (insertText:): Don't clear modifiers if code is space.
 
-2012-09-15  Tomohiro Matsuyama  <tomo@cx4a.org>
+2012-08-22  Paul Eggert  <eggert@cs.ucla.edu>
 
-       * alloc.c (emacs_blocked_malloc): Remove redundant MALLOC_PROBE.
+       * fontset.c (FONTSET_ADD): Return void, not Lisp_Object.
+       Otherwise, the compiler complains about (A?B:C) where B is void
+       and C is Lisp_Object.  This fixes an incompatibility with Sun C 5.12.
+       (fontset_add): Return void, for FONTSET_ADD.
 
 2012-08-21  Paul Eggert  <eggert@cs.ucla.edu>
 
        Start main loop and wait for application defined event.
        Inform select thread to stop selecting after main loop is exited.
        (ns_term_init): Create selfds pipe and set non-blocking.
-       Initialize select_mutex. Start the select thread (fd_handler).
+       Initialize select_mutex.  Start the select thread (fd_handler).
        (fd_handler:): Loop forever, wait for info from the main thread
        to either start or stop selecting.  When select returns, send
        and appdefined event.
        (xg_create_tool_bar): Allocate and initialize a xg_frame_tb_info
        if not present.
        (update_frame_tool_bar): Return early if data in xg_frame_tb_info
-       is up to date. Otherwise store new data.
+       is up to date.  Otherwise store new data.
        (free_frame_tool_bar): Free xg_frame_tb_info if present.
 
 2012-08-13  Dmitry Antipov  <dmantipov@yandex.ru>
 2012-08-11  Jan Djärv  <jan.h.d@swipnet.se>
 
        * nsterm.m (not_in_argv): New function.
-       (application:openFile,  application:openTempFile:):
+       (application:openFile, application:openTempFile:):
        (application:openFileWithoutUI:, application:openFiles:): Open file
        if not_in_argv returns non-zero (bug#12171).
 
 
 2012-07-21  Jan Djärv  <jan.h.d@swipnet.se>
 
-       * nsterm.m (accessibilityAttributeValue): New function. (Bug#11134).
+       * nsterm.m (accessibilityAttributeValue): New function.  (Bug#11134).
        (conversationIdentifier): Return value is NSInteger.
        * nsterm.m (accessibilityAttributeValue): Surround with NS_IMPL_COCOA.
 
        * lisp.h (struct vectorlike_header): New field `nbytes',
        adjust comment accordingly.
        * alloc.c (enum mem_type): New type `MEM_TYPE_VECTOR_BLOCK'
-       to denote vector blocks. Adjust users (live_vector_p,
+       to denote vector blocks.  Adjust users (live_vector_p,
        mark_maybe_pointer, valid_lisp_object_p) accordingly.
        (COMMON_MULTIPLE): Move outside #if USE_LSB_TAG.
        (VECTOR_BLOCK_SIZE, vroundup, VECTOR_BLOCK_BYTES),
        (allocate_vector_from_block, init_vectors, allocate_vector_from_block)
        (sweep_vectors): New functions.
        (allocate_vectorlike): Return `zero_vector' as the only vector of
-       0 items. Allocate new vector from block if vector size is less than
+       0 items.  Allocate new vector from block if vector size is less than
        or equal to VBLOCK_BYTES_MAX.
        (Fgarbage_collect): Move all vector sweeping code to sweep_vectors.
        (init_alloc_once): Add call to init_vectors.
        change it's type from Lisp_Object to bitfield.
        Change type of 'force_start', 'optional_new_start',
        'last_had_star', 'update_mode_line' and 'start_at_line_beg'
-       fields from Lisp_Object to bitfield. Adjust users accordingly.
+       fields from Lisp_Object to bitfield.  Adjust users accordingly.
 
 2012-05-31  Paul Eggert  <eggert@cs.ucla.edu>