]> code.delx.au - gnu-emacs/commitdiff
Merge from origin/emacs-24
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 29 Jan 2015 21:54:51 +0000 (13:54 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 29 Jan 2015 21:54:51 +0000 (13:54 -0800)
ad588af Improve the fix for bug #19701

Conflicts:
src/ChangeLog

1  2 
src/ChangeLog
src/dired.c
src/w32.c

diff --combined src/ChangeLog
index 36a3e8d64d240e9b0daf15353b74f48e34971a22,dc49508973977f0e26cb5d4d3fb5b3865acbc30a..96e6aa25d5e24bb7f5d3cefc7ff13a7a7ad666c0
@@@ -1,23 -1,15 +1,35 @@@
 -2015-01-28  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-29  Eli Zaretskii  <eliz@gnu.org>
  
+       * dired.c (directory_files_internal, file_name_completion)
+       [WINDOWSNT]: Signal an error when errno is set non-zero by
+       'readdir', regardless of its value.
+       * w32.c (sys_readdir): Set errno to ENOENT when the directory
+       doesn't exist and to EACCES when it's not accessible to the
+       current user.  Set errno to zero when FindNextFile exhausts the
+       directory, so that callers don't interpret that as an error and
+       don't signal a file-error.
+       (open_unc_volume): Set errno to ENOENT if WNetOpenEnum fails.
++2015-01-29  Eli Zaretskii  <eliz@gnu.org>
++
 +      Use bool for boolean in w32menu.c, w32font.c, w32uniscribe.c.
 +      * w32uniscribe.c (uniscribe_list, uniscribe_match): Use bool where
 +      appropriate.
 +
 +      * w32font.c (struct font_callback_data, w32font_list_internal)
 +      (w32font_driver, w32font_match_internal): Use bool where appropriate.
 +
 +      * w32menu.c (x_activate_menubar, set_frame_menubar)
 +      (w32_dialog_show, initialize_frame_menubar, w32_menu_show)
 +      (is_simple_dialog): Use bool where appropriate.
 +
 +2015-01-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool, not int, to track face changes
 +      * xfaces.c (face_change): Rename from face_change_count, and
 +      change from int to bool.  The var is now true (instead of nonzero)
 +      if attributes have changed; this is simpler.  All uses changed.
 +      Fixes: bug#19698
  
  2015-01-27  Eli Zaretskii  <eliz@gnu.org>
  
        * coding.c (CODING_ISO_INVOKED_CHARSET):
        Avoid undefined behavior if CODING_ISO_INVOCATION returns negative.
  
 -      Backport: correct old fix for GTK font selection
 -      * gtkutil.c (xg_get_font): Fix off-by-2 typo.
 -      Fixes: bug#3228
 -
 -2015-01-21  Jan Djärv  <jan.h.d@swipnet.se>
 -
 -        * nsterm.m (EV_TRAILER2): Set Vinhibit_quit to Qt (Bug#19531).
 -
  2015-01-17  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (produce_image_glyph): Fix display of images in R2L
        * emacs.c (usage_message): Fix the description of the -nl switch.
        (Bug#19542)
  
 -2015-01-08  Eli Zaretskii  <eliz@gnu.org>
 -
 -      * dispnew.c (buffer_posn_from_coords): Fix the value of the column
 -      returned for right-to-left screen lines.  (Before the change on
 -      2014-12-30, the incorrectly-computed X pixel coordinate concealed
 -      this bug.)
 -
  2015-01-05  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (move_it_to, try_cursor_movement): Don't use the window
        * emacs.c (syms_of_emacs) <system-configuration>: Doc fix.
        (Bug#19502)
  
 -2014-12-30  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lisp.mk (lisp): Add cl-preloaded.
 +
 +2015-01-27  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xfaces.c
 +      * dispextern.h: Adjust to signature changes.
 +      * font.c (font_at, font_range):
 +      * fontset.c (Finternal_char_font):
 +      * fringe.c (draw_fringe_bitmap_1):
 +      * xdisp.c (handle_face_prop, face_before_or_after_it_pos)
 +      (get_next_display_element, highlight_trailing_whitespace)
 +      (display_string, calc_line_height_property)
 +      (note_mode_line_or_margin_highlight, note_mouse_highlight):
 +      * xfaces.c (tty_suppress_bold_inverse_default_colors_p)
 +      (menu_face_changed_default, recompute_basic_faces)
 +      (Fbitmap_spec_p, parse_rgb_list, tty_lookup_color)
 +      (tty_defined_color, defined_color, face_color_gray_p)
 +      (face_color_supported_p, load_color2, load_face_colors)
 +      (Fx_list_fonts, LFACEP, push_named_merge_point)
 +      (resolve_face_name, lface_from_face_name_no_resolve)
 +      (lface_from_face_name, get_lface_attributes_no_remap)
 +      (get_lface_attributes, lface_fully_specified_p)
 +      (set_lface_from_font, merge_face_vectors, merge_named_face)
 +      (merge_face_ref, Finternal_make_lisp_face)
 +      (Finternal_lisp_face_p, Finternal_copy_lisp_face)
 +      (Finternal_set_lisp_face_attribute)
 +      (update_face_from_frame_parameter, set_font_frame_param)
 +      (face_boolean_x_resource_value)
 +      (Finternal_set_lisp_face_attribute_from_resource)
 +      (x_update_menu_appearance, Finternal_get_lisp_face_attribute)
 +      (Finternal_merge_in_global_face, Fface_font, face_attr_equal_p)
 +      (lface_equal_p, Finternal_lisp_face_equal_p)
 +      (Finternal_lisp_face_empty_p, lface_same_font_attributes_p)
 +      (Fcolor_distance, lookup_named_face, lookup_basic_face)
 +      (lookup_derived_face, Fface_attributes_as_vector)
 +      (x_supports_face_attributes_p, tty_supports_face_attributes_p)
 +      (Fdisplay_supports_face_attributes_p, realize_basic_faces)
 +      (realize_default_face, realize_named_face)
 +      (realize_non_ascii_face, realize_x_face, map_tty_color)
 +      (realize_tty_face, compute_char_face, face_at_buffer_position)
 +      (face_for_overlay_string, face_at_string_position):
 +      Use bool for boolean.
 +      * xfaces.c (set_lface_from_font):
 +      Return void, since callers never use the result.
 +
 +2015-01-26  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * image.c (lookup_pixel_color): Reorder conditions that are
 +      written backwards.
 +      (x_to_xcolors): Likewise.
 +      (x_detect_edges): Likewise.
 +      (png_load_body): Likewise.
 +      (gif_close): Likewise.
 +      (gif_load): Likewise.
 +
 +2015-01-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Use bool for boolean in w32term.c
 +      * w32term.c (x_update_window_begin, x_update_window_end)
 +      (x_update_end, x_after_update_window_line)
 +      (x_set_glyph_string_gc, x_draw_glyph_string_background)
 +      (x_draw_glyph_string_foreground)
 +      (x_draw_composite_glyph_string_foreground)
 +      (x_draw_glyphless_glyph_string_foreground)
 +      (x_draw_image_glyph_string, x_draw_glyph_string)
 +      (x_draw_stretch_glyph_string, note_mouse_movement)
 +      (w32_mouse_position, x_scroll_bar_report_motion)
 +      (x_horizontal_scroll_bar_report_motion, w32_read_socket)
 +      (w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar)
 +      (w32_draw_window_cursor, x_new_font, x_set_offset)
 +      (x_set_window_size, x_make_frame_invisible, x_iconify_frame): Use
 +      bool where appropriate.
 +
 +      Use bool for boolean in w32fns.c
 +      * w32fns.c (w32_defined_color, x_decode_color)
 +      (Fxw_color_defined_p, Fxw_color_values, x_set_icon_type)
 +      (x_set_menu_bar_lines, x_change_tool_bar_height)
 +      (x_set_internal_border_width, x_explicitly_set_name)
 +      (x_implicitly_set_name, Fx_create_frame, w32_window)
 +      (x_create_tip_frame, Fx_show_tip): Use bool where appropriate.
 +
 +2015-01-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xfns.c
 +      * xfaces.c (x_update_menu_appearance):
 +      * xfns.c (x_real_positions, x_defined_color, x_decode_color)
 +      (xg_set_icon, xg_set_icon_from_xpm_data, x_set_cursor_color)
 +      (x_set_icon_type, x_set_icon_name, x_set_menu_bar_lines)
 +      (x_change_tool_bar_height, x_set_internal_border_width)
 +      (x_encode_text, x_set_name_internal, x_explicitly_set_name)
 +      (x_implicitly_set_name, x_default_scroll_bar_color_parameter)
 +      (hack_wm_protocols, xic_create_fontsetname, xic_free_xfontset)
 +      (x_window, x_icon, Fx_wm_set_size_hint, Fx_create_frame)
 +      (Fxw_color_defined_p, Fxw_color_values, x_create_tip_frame)
 +      (Fx_show_tip, clean_up_file_dialog, Fx_file_dialog)
 +      (clean_up_dialog, syms_of_xfns):
 +      * xterm.h (xg_set_icon, xg_set_icon_from_xpm_data)
 +      (xic_create_fontsetname):
 +      Use bool for boolean.
 +      * xfns.c: Include bitmaps/gray.xbm unconditionally.
 +
 +      Count MANY function args more reliably
 +      * alloc.c (Fgc_status, purecopy, unbind_to, garbage_collect_1):
 +      * buffer.c (Fbuffer_list, Fkill_buffer):
 +      * callint.c (read_file_name, Fcall_interactively):
 +      * charset.c (Fset_charset_priority, syms_of_charset):
 +      * chartab.c (uniprop_encode_value_numeric):
 +      * coding.c (syms_of_coding):
 +      * composite.c (syms_of_composite):
 +      * data.c (wrong_range):
 +      * dbusbind.c (syms_of_dbusbind):
 +      * dired.c (file_attributes):
 +      * editfns.c (Fdecode_time, update_buffer_properties, format2):
 +      * eval.c (run_hook_with_args_2, apply1, call1, call2, call3)
 +      (call4, call5, call6, call7):
 +      * fileio.c (Finsert_file_contents, choose_write_coding_system)
 +      (Fcar_less_than_car, build_annotations, auto_save_error):
 +      * filelock.c (get_boot_time):
 +      * fns.c (internal_equal, nconc2, Fyes_or_no_p, Fwidget_apply):
 +      (maybe_resize_hash_table, secure_hash):
 +      * font.c (font_style_to_value, font_open_by_name, Flist_fonts):
 +      * fontset.c (fontset_add, Fset_fontset_font):
 +      * ftfont.c (ftfont_lookup_cache):
 +      * gtkutil.c (xg_get_font):
 +      * insdel.c (signal_before_change, signal_after_change):
 +      * keymap.c (append_key):
 +      * lread.c (load_warn_old_style_backquotes, Fload, init_lread):
 +      * minibuf.c (Fread_buffer):
 +      * print.c (print_preprocess):
 +      * process.c (Fformat_network_address, Fmake_network_process)
 +      (server_accept_connection):
 +      * sound.c (Fplay_sound_internal):
 +      * term.c (Fsuspend_tty, Fresume_tty):
 +      * window.c (window_list):
 +      * xdisp.c (run_redisplay_end_trigger_hook, add_to_log)
 +      (message_with_string):
 +      * xfaces.c (Fx_list_fonts):
 +      * xfont.c (syms_of_xfont):
 +      * xselect.c (x_handle_selection_request)
 +      (x_handle_selection_clear, x_clear_frame_selections)
 +      (x_clipboard_manager_error_1):
 +      Prefer CALLMANY and CALLN to counting args by hand.
 +      * doc.c (reread_doc_file): Remove unused code.
 +      * fns.c (concat2, concat3): Redo to avoid need for local-var vector.
 +      (cmpfn_user_defined, hashfn_user_defined, Fmaphash):
 +      Prefer call1 and call2 to Ffuncall.
 +      * keyboard.c (safe_run_hook_funcall, safe_run_hooks):
 +      Use struct literal rather than a local var, for simplicity.
 +      * keymap.c (where_is_internal): Use NULL rather than a pointer
 +      to unused args.
 +      * lisp.h (CALLMANY, CALLN): New macros.
 +      * sound.c (Fplay_sound_internal): Coalesce duplicate code.
 +      Fixes: bug#19634
 +
 +      Use gnustep-config if available
 +      * emacs.c [NS_IMPL_GNUSTEP]: Don't include <GNUstepBase/GSConfig.h>.
 +      It doesn't appear to be needed, and the inclusion breaks on
 +      Ubuntu 14.10 when 'configure' uses 'gnustep-config'.
 +
 +2015-01-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (init_iterator): Restore a comment lost in transition.
 +
 +2015-01-22  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xfont.c, xftfont.c, xgselect.c
 +      * xfont.c (xfont_driver, xfont_chars_supported)
 +      (xfont_text_extents):
 +      * xftfont.c (xftfont_get_colors, xftfont_open)
 +      (xftfont_prepare_face, xftfont_done_face)
 +      (xftfont_cached_font_ok):
 +      * xgselect.c (xg_select):
 +      Use bool for boolean.
 +
 +      Don't downcase system diagnostics' first letters
 +      * fileio.c (report_file_errno): Don't downcase, and simplify.
 +      Fixes: bug#19642
 +
 +      Isolate NIL_IS_ZERO-assuming code better
 +      Suggested by Stefan Monnier in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00588.html
 +      * alloc.c (allocate_pseudovector):
 +      Use memclear, not memsetnil, to remove a 'verify'.
 +      * callint.c (Fcall_interactively):
 +      * dispnew.c (realloc_glyph_pool):
 +      * xdisp.c (init_iterator):
 +      Use memclear, not memset, to remove a 'verify'.
 +      * lisp.h (memclear): Rename from memsetnil, and take a byte
 +      count rather than a word count.  All callers changed.
 +
 +2015-01-20  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Undo port to hypothetical nonzero Qnil case
 +      This mostly undoes the previous change in this area.  See:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00570.html
 +      * alloc.c (allocate_pseudovector):
 +      * callint.c (Fcall_interactively):
 +      * dispnew.c (realloc_glyph_pool):
 +      * fringe.c (init_fringe):
 +      * lisp.h (memsetnil):
 +      * xdisp.c (init_iterator):
 +      Simplify by assuming that Qnil is zero, but verify the assumption.
 +      * lisp.h (NIL_IS_ZERO): Revert back to this symbol, removing
 +      NIL_IS_NONZERO.  All uses changed.
 +
 +2015-01-20  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (EV_TRAILER2): Set Vinhibit_quit to Qt (Bug#19531).
 +
 +2015-01-20  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Prefer xlispstrdup to avoid dumb calls to strlen.
 +      * nsfont.m (ns_get_family):
 +      * nsterm.m (ns_term_init):
 +      * w32fns.c (w32_window):
 +      * xfns.c (x_window, Fx_select_font): Use xlispstrdup.
 +
 +2015-01-20  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Correct an old fix for GTK font selection
 +      * gtkutil.c (xg_get_font): Fix off-by-2 typo.
 +      Fixes: bug#3228
 +
 +      Fix minor bugs with printing null bytes
 +      * minibuf.c (read_minibuf_noninteractive):
 +      * xdisp.c (Ftrace_to_stderr) [GLYPH_DEBUG]:
 +      Work even if the Lisp string contains a null byte.
 +
 +      Port to hypothetical case where Qnil is nonzero
 +      * alloc.c (allocate_pseudovector):
 +      * callint.c (Fcall_interactively):
 +      * coding.c (syms_of_coding):
 +      * dispnew.c (realloc_glyph_pool):
 +      * fringe.c (init_fringe):
 +      * lisp.h (memsetnil):
 +      * xdisp.c (init_iterator):
 +      Port to the currently-hypothetical case where Qnil is nonzero.
 +      * dispnew.c (adjust_glyph_matrix): Remove unnecessary verification,
 +      as there are no Lisp_Object values in the data here.
 +      * lisp.h (NIL_IS_NONZERO): New symbol, replacing NIL_IS_ZERO.
 +      All uses changed.  Define only if not already defined, so that one
 +      can debug with -DNIL_IS_NONZERO.
 +      * xdisp.c (init_iterator): Remove unnecessary initializations to 0.
 +
 +2015-01-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (adjust_glyph_matrix, realloc_glyph_pool): Verify that
 +      Qnil is represented as zero, before using that to initialize parts
 +      of the glyph structure.
 +
 +      * xdisp.c (init_iterator): Verify that Qnil is represented as
 +      zero, before using that to initialize parts of the iterator
 +      structure.
 +
 +2015-01-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Prefer memset to repeatedly assigning Qnil
 +      * alloc.c (allocate_pseudovector): Catch more bogus values.
 +      * alloc.c (allocate_pseudovector):
 +      * callint.c (Fcall_interactively):
 +      * coding.c (syms_of_coding):
 +      * fringe.c (init_fringe):
 +      Verify that Qnil == 0.
 +      * callint.c (Fcall_interactively):
 +      * eval.c (Fapply, Ffuncall):
 +      * fns.c (mapcar1, larger_vector):
 +      * font.c (font_expand_wildcards):
 +      * fringe.c (init_fringe):
 +      Prefer memset to assigning zeros by hand.
 +      * callint.c (Fcall_interactively):
 +      Remove duplicate assignment of Qnil to args[i].
 +      * coding.c (syms_of_coding):
 +      Prefer LISP_INITIALLY_ZERO to assigning zeros by hand.
 +      * fileio.c (Ffile_selinux_context):
 +      Rewrite to avoid need for Lisp_Object array.
 +      * lisp.h (XLI_BUILTIN_LISPSYM): New macro.
 +      (DEFINE_LISP_SYMBOL_END): Use it.
 +      (NIL_IS_ZERO): New constant.
 +      (memsetnil): New function.
 +
 +2015-01-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Tune pseudovector allocation assuming Qnil == 0.
 +      * alloc.c (allocate_pseudovector): Use memset for both
 +      Lisp_Objects and regular slots.  Add zerolen arg.
 +      * lisp.h (allocate_pseudovector): Adjust prototype.
 +      (ALLOCATE_PSEUDOVECTOR): Adjust user.
 +      (ALLOCATE_ZEROED_PSEUDOVECTOR): New macro.
 +      (allocate_hash_table, allocate_window, allocate_frame)
 +      (allocate_process, allocate_terminal): Remove prototypes.
 +      * fns.c (allocate_hash_table): Now static here.
 +      * frame.c (allocate_frame):
 +      * process.c (allocate_process):
 +      * terminal.c (allocate_terminal):
 +      * window.c (allocate_window): Now static here.
 +      Use ALLOCATE_ZEROED_PSEUDOVECTOR.  Add comment.
 +
 +      * lisp.h (XTERMINAL): Add eassert.
 +      * process.c (make_lisp_proc): Now static here.
 +
 +      Prefer INLINE functions in font.h to match style used in lisp.h.
 +      * font.h (FONTP, FONT_SPEC_P, FONT_ENTITY_P, FONT_OBJECT_P)
 +      (CHECK_FONT, CHECK_FONT_SPEC, CHECK_FONT_ENTITY, CHECK_FONT_OBJECT)
 +      (XFONT_SPEC, XFONT_ENTITY, XFONT_OBJECT, CHECK_FONT_GET_OBJECT):
 +      Now functions.
 +      * font.c (Ffont_otf_alternates, Fquery_font, Ffont_get_glyphs):
 +      * ftfont.c (ftfont_shape):
 +      * macfont.m (macfont_shape):
 +      * w32uniscribe.c (uniscribe_shape):
 +      * xftfont.c (xftfont_shape): Adjust CHECK_FONT_GET_OBJECT users.
 +
 +2015-01-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Give up on -Wsuggest-attribute=const
 +      * decompress.c (Fzlib_available_p):
 +      * gnutls.c (Fgnutls_available_p):
 +      * gtkutil.h (xg_uses_old_file_dialog):
 +      * xdisp.c (Ftool_bar_height):
 +      * xmenu.c (popup_activated):
 +      No longer const, since it's not const on at lest some
 +      configurations, and we shouldn't lie to the compiler.
 +
 +2015-01-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fileio.c: Include binary-io.h.
 +      (Fset_binary_mode): New function.
 +      (syms_of_fileio): Defsubr it.
 +      (syms_of_fileio) <Qstdin, Qstdout, Qstderr>: DEFSYM them.
 +
 +2015-01-15  Teodor Zlatanov  <tzz@lifelogs.com>
 +
 +      * gnutls.c (init_gnutls_functions): Import gnutls_x509_crt_check_issuer.
 +      (Fgnutls_peer_status): Use it to set the :self-signed flag.
 +      Rename the previous :self-signed to :unknown-ca. (Bug#19404)
 +      (Fgnutls_peer_status_warning_describe): Explain :unknown-ca flag.
 +
 +2015-01-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c (w32_wnd_proc): Ignore MENUITEMINFO's dwItemData data
 +      when FLAGS indicate the item is not highlighted.  (Bug#19596)
 +
 +2015-01-14  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * xmenu.c (update_frame_menubar): Remove garbaged code.
 +
 +2015-01-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      remove_slash_colon need not be inline
 +      * process.c, process.h (remove_slash_colon): No longer inline.
 +      This saves text bytes without hurting runtime performance.
 +
 +2015-01-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid extra multibyteness check in ENCODE_FILE users.
 +      * callproc.c (encode_current_directory, Fcall_process, call_process):
 +      * dired.c (directory_files_internal, file_name_completion):
 +      Do not check for STRING_MULTIBYTE because encode_file_name
 +      is a no-op for unibyte strings.
 +
 +      * process.h (remove_slash_colon): New function.
 +      * callproc.c (encode_current_directory, call_process):
 +      * process.c (Fstart_process): Use it.
 +
 +      Consistently handle time zone specification.
 +      * editfns.c (decode_time_zone): New function, refactored out from ...
 +      (Fencode_time): ... adjusted user.
 +      (Fset_time_zone_rule): Use decode_time_zone.
 +
 +      * editfns.c (make_buffer_string_both): If requested range intersects
 +      the gap, don't move the latter but copy in two regions, thus avoiding
 +      unnecessary relocation of buffer data.
 +
 +2015-01-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xmenu.c, xml.c
 +      * xmenu.c (x_menu_set_in_use, popup_get_selection)
 +      (Fx_menu_bar_open_internal, popup_widget_loop)
 +      (x_activate_menubar, xg_crazy_callback_abort)
 +      (update_frame_menubar, set_frame_menubar)
 +      (initialize_frame_menubar, free_frame_menubar)
 +      (create_and_show_popup_menu, x_menu_show)
 +      (create_and_show_dialog, x_dialog_show):
 +      * xml.c (libxml2_loaded_p, init_libxml2_functions, parse_region)
 +      (Flibxml_parse_html_region, Flibxml_parse_xml_region):
 +      * xrdb.c (main) [TESTRM]:
 +      * xsettings.c (init_gsettings):
 +      * xterm.c (XFillRectangle, xg_scroll_callback)
 +      (xg_end_scroll_callback):
 +      * xterm.h (x_menu_set_in_use) [USE_GTK || USE_MOTIF]:
 +      Use bool for boolean.
 +      * xmenu.c (TRUE): Remove; no longer used.
 +      (show_help_event): Remove long-unused code.
 +      (set_frame_menubar): Remove "#if 1" and corresponding "#endif" lines.
 +
 +2015-01-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't say Fnext_read_file_uses_dialog_p is const
 +      It's const only if a windowing system is not used; don't say it's
 +      const otherwise.  See:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00310.html
 +      * fileio.c (next_read_file_uses_dialog_p): Remove.
 +      Move guts back to ...
 +      (Fnext_read_file_uses_dialog_p): ... here.
 +      Don't declare as const, as make-docfile.c now has a special case
 +      for this function.  This is an ugly hack, but it's better than
 +      lying to the compiler.
 +
 +      Remove now-unnecessary forward XTYPE decl
 +      * lisp.h (XTYPE): Remove forward declaration.  The recent merge
 +      from emacs-24 fixed the problem in a better way, by moving XPNTR's
 +      definition to after XTYPE's.
 +
 +2015-01-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Fix problems with 32-bit wide-int build exposed by MinGW.
 +      * lisp.h (XPNTR): Move definition to after XTYPE, to avoid
 +      compilation error in an unoptimized build when !USE_LSB_TAG.
 +
 +      * w32heap.c (DUMPED_HEAP_SIZE): For 32-bit wide-int build, use the
 +      same larger value as for the 64-bit build.
 +
 +      * w32term.h (SCROLL_BAR_PACK): Cast the result to UINT_PTR to
 +      avoid compiler warnings.
 +
 +      * w32proc.c (Fw32_get_codepage_charset, Fw32_set_keyboard_layout):
 +      Avoid compiler warnings about cast from integer to pointer of
 +      different size.
 +
 +      * w32menu.c (menubar_selection_callback, w32_menu_show): Cast to
 +      UINT_PTR instead of EMACS_INT, to avoid compiler warnings about
 +      casting from integer to pointer of different size.
 +      (add_menu_item): Pass the help-echo string as a pointer to
 +      Lisp_String, not as a Lisp_Object.
 +      (w32_menu_display_help): Use make_lisp_ptr to reconstruct a Lisp
 +      string object from its C pointer.
 +
 +      * w32fns.c (w32_msg_pump) <WM_EMACS_UNREGISTER_HOT_KEY>: Use
 +      make_lisp_ptr instead of XIL, to reconstruct a Lisp_Cons from its
 +      C pointer.
 +      <WM_EMACS_TOGGLE_LOCK_KEY>: msg.lparam is now a C integer.
 +      (Fx_create_frame): Type-cast the result of XFASTINT to avoild
 +      compiler warnings about size differences.
 +      (Fw32_unregister_hot_key): Pass the tail of w32_grabbed_keys as a
 +      pointer to a Lisp_Cons struct, not as a disguised EMACS_INT.
 +      (Fw32_toggle_lock_key): Pass the new state of the key as a C
 +      integer; use -1 for nil.  Doc fix.
 +
 +      * .gdbinit (xgetsym): New subroutine.
 +      (xsymname, xsymbol): Use it.
 +      (xprintsym): No need to call xgetptr.
 +
 +2015-01-13  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (adjust_frame_size): Make sure new numbers of
 +      lines/columns get installed after font size change (Bug#19575).
 +
 +2015-01-13  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Add DEFUN attributes.
 +      * callint.c (Finteractive):
 +      * character.c (Fcharacterp, Fmax_char):
 +      * data.c (Feq, Fnull, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp)
 +      (Fstringp, Fchar_or_string_p, Fintegerp, Fnatnump, Fnumberp)
 +      (Ffloatp, Fbyteorder):
 +      * decompress.c (Fzlib_available_p):
 +      * fns.c (Fidentity):
 +      * frame.c (Fframe_windows_min_size):
 +      * gnutls.c (Fgnutls_error_p, Fgnutls_available_p):
 +      * window.c (Fwindow__sanitize_window_sizes):
 +      * xdisp.c (Ftool_bar_height):
 +      * xfaces.c (Fface_attribute_relative_p): Add const attribute.
 +      * emacs.c (Fkill_emacs):
 +      * eval.c (Fthrow):
 +      * keyboard.c (Ftop_level, Fexit_recursive_edit)
 +      (Fabor_recursive_edit): Add noreturn attribute.
 +
 +      * search.c (fast_string_match_internal): New function,
 +      consolidated from...
 +      (fast_string_match, fast_string_match_ignore_case): ...functions
 +      which are...
 +      * lisp.h (fast_string_match, fast_string_match_ignore_case):
 +      inlined from here now.
 +      (fast_string_match_internal): Add prototype.
 +      * dired.c (file_name_completion): Use fast_string_match_internal.
 +
 +      * fileio.c (next_read_file_uses_dialog_p): New workaround ...
 +      (Fnext_read_file_uses_dialog_p): ... called from here to avoid
 +      ATTRIBUTE_CONST dependency from #ifdefs.  For details, see
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00289.html.
 +
 +2015-01-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port to 32-bit MingGW --with-wide-int
 +      Problem reported by Eli Zaretskii in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00265.html
 +      * lisp.h (struct Lisp_Sub_Char_Table): Check that offset matches
 +      what we think it is, rather than checking only its alignment (and
 +      doing so incorrectly on MinGW).
 +
 +2015-01-12  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fileio.c (Ffile_name_as_directory, Fdirectory_file_name):
 +      Remove dead NILP check.
 +      * image.c (Flookup_image): Use regular format for docstring.
 +      * keyboard.c (apply_modifiers_uncached): Use stpcpy.
 +
 +2015-01-12  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * dispnew.c (change_frame_size_1): Pass Qchange_frame_size to
 +      adjust_frame_size.
 +      * frame.c (frame_default_tool_bar_height): New variable.
 +      (adjust_frame_size): Possibly add requested adjustment to
 +      Vframe_adjust_size_history.
 +      (make_frame): Initialize tool_bar_redisplayed_once slot.
 +      (Fset_frame_height, Fset_frame_width, Fset_frame_size): Clarify
 +      doc-string.  Call adjust_frame_size unconditionally (the frame's
 +      text size may remain unaltered but the pixel size may change).
 +      (x_figure_window_size): If frame_default_tool_bar_height was
 +      set, use it instead of calculating the tool bar height from
 +      DEFAULT_TOOL_BAR_IMAGE_HEIGHT.  Don't set
 +      Vframe_initial_frame_tool_bar_height.
 +      (Qchange_frame_size, Qxg_frame_set_char_size)
 +      (Qset_window_configuration, Qx_create_frame_1)
 +      (Qx_create_frame_2): New symbols.
 +      (Vframe_initial_frame_tool_bar_height): Remove.
 +      (Vframe_adjust_size_history): New history variable for debugging
 +      frame size adjustments.
 +      * frame.h (struct frame): New boolean slot
 +      tool_bar_redisplayed_once.
 +      (frame_default_tool_bar_height): Extern.
 +      * gtkutil.c (xg_frame_set_char_size): Pass Qxg_frame_set_char_size
 +      to adjust_frame_size.
 +      * nsfns.m (Fx_create_frame): Pass Pass Qx_create_frame_1 and
 +      Qx_create_frame_2 to adjust_frame_size.
 +      * w32fns.c (x_change_tool_bar_height): Call adjust_frame_size with
 +      inhibit 1 when we have not redisplayed the tool bar yet.
 +      (Fx_create_frame): Pass Pass Qx_create_frame_1 and
 +      Qx_create_frame_2 to adjust_frame_size.
 +      * w32menu.c (set_frame_menubar): Simplify adjust_frame_size
 +      call.
 +      * window.c (Fset_window_configuration): Pass
 +      Qset_window_configuration to adjust_frame_size.
 +      * xdisp.c (redisplay_tool_bar): Assign new height to
 +      frame_default_tool_bar_height.
 +      (redisplay_internal): If we haven't redisplayed this frame's
 +      tool bar, call redisplay_tool_bar early so we can adjust the
 +      frame size accordingly.
 +      * xfns.c (x_change_tool_bar_height): Call adjust_frame_size with
 +      inhibit 1 when we have not redisplayed the tool bar yet.
 +      (Fx_create_frame): Pass Pass Qx_create_frame_1 and
 +      Qx_create_frame_2 to adjust_frame_size.
 +
 +2015-01-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Have 'make' output better GEN names
 +      * Makefile.in (gl-stamp, globals.h): Simplify by putting the new
 +      contents of globals.h into gl-stamp.  This lets us use AM_V_GEN
 +      more naturally so that 'make' can output more-accurate names.
 +
 +2015-01-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * buffer.c (init_buffer_once): Initialize buffer_local_flags before
 +      calling reset_buffer_local_variables, and make sure we initialize
 +      it completely.
 +
 +2015-01-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * coding.c (Fcoding_system_plist): Use common style for docstring.
 +
 +2015-01-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port to MSB hosts without optimization
 +      E.g., when configuring --with-wide-int CFLAGS='-O0' on x86,
 +      the inline function XTYPE needs to be declared before being used.
 +      * lisp.h (XTYPE): New forward declaration.
 +
 +2015-01-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port to 32-bit --with-wide-int
 +      Prefer symbol indexes to struct Lisp_Symbol * casted and then
 +      widened, as the latter had trouble with GCC on Fedora 21 when
 +      configured --with-wide-int and when used in static initializers.
 +      * alloc.c (garbage_collect_1, which_symbols):
 +      * lread.c (init_obarray):
 +      Prefer builtin_lisp_symbol when it can be used.
 +      * dispextern.h (struct image_type.type):
 +      * font.c (font_property_table.key):
 +      * frame.c (struct frame_parm_table.sym):
 +      * keyboard.c (scroll_bar_parts, struct event_head):
 +      * xdisp.c (struct props.name):
 +      Use the index of a builtin symbol rather than its address.
 +      All uses changed.
 +      * lisp.h (TAG_SYMPTR, XSYMBOL_INIT): Remove, replacing with ...
 +      (TAG_SYMOFFSET, SYMBOL_INDEX): ... new macros that deal with
 +      symbol indexes rather than pointers, and which work better on MSB
 +      hosts because they shift right before tagging.  All uses changed.
 +      (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END):
 +      No longer noops on wide-int hosts, since they work now.
 +      (builtin_lisp_symbol): New function.
 +
 +      Port to HAVE_FREETYPE && !HAVE_XFT
 +      * dispextern.h (struct face.extra) [HAVE_FREETYPE && !HAVE_XFT]:
 +      * font.h (syms_of_xftfont) [HAVE_FREETYPE && !HAVE_XFT]:
 +      Declare in this case too.
 +
 +2015-01-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c (Fw32_register_hot_key): Use XINT instead of XLI.
 +
 +      * w32notify.c (Fw32notify_add_watch, w32_get_watch_object): Use
 +      make_pointer_integer instead of XIL.
 +      (Fw32notify_rm_watch): Use XINTPTR instead of XLI.
 +
 +      * w32inevt.c (handle_file_notifications): Use make_pointer_integer
 +      instead of XIL.  Put a list of the descriptor, action, and file
 +      name in event->arg, instead of spreading them between event->code
 +      and event->arg.
 +
 +      * w32term.c (queue_notifications): Use make_pointer_integer
 +      instead of XIL.  Put a list of the descriptor, action, and file
 +      name in event->arg, instead of spreading them between event->code
 +      and event->arg.
 +
 +      * keyboard.c (kbd_buffer_get_event) [HAVE_W32NOTIFY]: Adjust Lisp
 +      event creation to changes in w32term.c and w32inevt.c above.
 +
 +2015-01-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port Qnil==0 changes to 32-bit --with-wide-int
 +      * lisp.h (lisp_h_XSYMBOL, XSYMBOL): Assume USE_LSB_TAG in the
 +      macro-implemented version.  For the non-USE_LSB_TAG case, supply
 +      a new inline function that is the inverse of the new TAG_SYMPTR.
 +      (lisp_h_XUNTAGBASE, XUNTAGBASE): Remove.  All uses removed.
 +      (TAG_SYMPTR) [!USE_LSB_TAG]: If the pointer subtraction yields a
 +      negative number, don't allow sign bits to bleed into the encoded
 +      value.  Shift in zero bits instead.
 +
 +      Refactor pointer-to-integer conversion
 +      * gfilenotify.c (monitor_to_lisp, lisp_to_monitor):
 +      Rename and move to lisp.h.  All uses changed.
 +      * lisp.h (XINTPTR, make_pointer_integer): New inline functions,
 +      which are renamed from gfilenotify.c's lisp_to_monitor and
 +      monitor_to_lisp, and with more-generic void * signatures.
 +
 +2015-01-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (buffer_posn_from_coords): Fix the value of the column
 +      returned for right-to-left screen lines.  (Before the change on
 +      2014-12-30, the incorrectly-computed X pixel coordinate concealed
 +      this bug.)
 +
 +      * .gdbinit (xsymname): New subroutine.
 +      (xprintsym, initial-tbreak): Use it to access the name of a symbol
 +      in a way that doesn't cause GDB to barf when it tries to
 +      dereference a NULL pointer.
 +
 +      * xdisp.c (next_element_from_c_string): Use Lisp integer zero as
 +      the object.
 +      (set_cursor_from_row, try_cursor_movement, dump_glyph)
 +      (insert_left_trunc_glyphs, append_space_for_newline)
 +      (extend_face_to_end_of_line, highlight_trailing_whitespace)
 +      (find_row_edges, ROW_GLYPH_NEWLINE_P, Fmove_point_visually)
 +      (Fbidi_resolved_levels, produce_special_glyphs)
 +      (rows_from_pos_range, mouse_face_from_buffer_pos)
 +      (note_mouse_highlight): Use nil as the object for glyphs inserted
 +      by the display engine, and test with NILP instead of INTEGERP.
 +      (Bug#19535)
 +
 +      * w32fns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
 +      the display engine.
 +
 +      * xfns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
 +      the display engine.
 +
 +      * dispextern.h (struct glyph, struct it): Update comments for the
 +      OBJECT members.
 +
 +2015-01-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port new Lisp symbol init to x86 --with-wide-int
 +      * lisp.h (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END):
 +      Define to empty on platforms where EMACS_INT_MAX != INTPTR_MAX, as
 +      GCC (at least) does not allow a constant initializer to widen an
 +      address constant.
 +
 +      * lisp.h (TAG_SYMPTR): Don't do arithmetic on NULL.
 +      This is a followup to the "Port Qnil==0 XUNTAG to clang" patch.
 +      Although clang doesn't need it, some other compiler might, and
 +      it's easy enough to be safe.
 +
 +      * conf_post.h (ATTRIBUTE_ALLOC_SIZE): Port to clang 3.5.0.
 +      Apparently clang removed support for the alloc_size attribute.
 +
 +      Port Qnil==0 XUNTAG to clang
 +      clang has undefined behavior if the program subtracts an integer
 +      from (char *) 0.  Problem reported by YAMAMOTO Mitsuharu in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2015-01/msg00132.html
 +      * lisp.h (lisp_h_XUNTAG) [USE_LSB_TAG]:
 +      (XUNTAG) [!USE_LSB_TAG]: Port to clang 3.5.0.
 +
 +      Port GFileMonitor * hack to Qnil==0 platforms
 +      Reported by Glenn Morris in: http://bugs.gnu.org/15880#112
 +      * gfilenotify.c (monitor_to_lisp, lisp_to_monitor): New functions.
 +      (dir_monitor_callback, Fgfile_add_watch, Fgfile_rm_watch): Use them.
 +
 +2015-01-06  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (x_set_window_size): Call updateFrameSize to get real
 +      size instead of using widht/height.  The frame may be constrained.
 +
 +2015-01-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * lisp.h (XSYMBOL): Parenthesize id in forward decl.
 +      Needed when neither optimizing nor inlining.
 +      Also, sort decls alphabetically.
 +
 +2015-01-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32proc.c, w32.h, w32fns.c, w32font.c, w32menu.c, w32notify.c:
 +      * w32proc.c, w32select.c, w32term.c, w32uniscribe.c: Remove
 +      declarations of Q* variables that represent symbols.
 +
 +2015-01-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use 0 for Qnil
 +      Fixes Bug#15880.
 +      If USE_LSB_TAG, arrange for the representation of Qnil to be zero so
 +      that NILP (x) is equivalent to testing whether x is 0 at the
 +      machine level.  The overall effects of this and the previous patch
 +      shrink the size of the text segment by 2.3% and speeds up
 +      compilation of all the .elc files by about 0.5% on my platform,
 +      which is Fedora 20 x86-64.
 +      * lisp.h (lisp_h_XPNTR, lisp_h_XSYMBOL, lisp_h_XUNTAG)
 +      (make_lisp_symbol) [USE_LSB_TAG]:
 +      Symbols now tag the difference from lispsym, not the pointer.
 +      (lisp_h_XUNTAGBASE, TAG_SYMPTR): New macros.
 +      (Lisp_Int0, Lisp_Int1, Lisp_Symbol, Lisp_Misc, Lisp_String, Lisp_Cons):
 +      Renumber so that Lisp_Symbol is 0, so that Qnil is zero.
 +      (XSYMBOL): New forward decl.
 +      (XUNTAGBASE): New function.
 +      (XUNTAG): Use it.
 +
 +      Compute C decls for DEFSYMs automatically
 +      Fixes Bug#15880.
 +      This patch also makes Q constants (e.g., Qnil) constant addresses
 +      from the C point of view.
 +      * alloc.c, bidi.c, buffer.c, bytecode.c, callint.c, casefiddle.c:
 +      * casetab.c, category.c, ccl.c, charset.c, chartab.c, cmds.c, coding.c:
 +      * composite.c, data.c, dbusbind.c, decompress.c, dired.c, dispnew.c:
 +      * doc.c, editfns.c, emacs.c, eval.c, fileio.c, fns.c, font.c, fontset.c:
 +      * frame.c, fringe.c, ftfont.c, ftxfont.c, gfilenotify.c, gnutls.c:
 +      * image.c, inotify.c, insdel.c, keyboard.c, keymap.c, lread.c:
 +      * macfont.m, macros.c, minibuf.c, nsfns.m, nsfont.m, nsimage.m:
 +      * nsmenu.m, nsselect.m, nsterm.m, print.c, process.c, profiler.c:
 +      * search.c, sound.c, syntax.c, term.c, terminal.c, textprop.c, undo.c:
 +      * window.c, xdisp.c, xfaces.c, xfns.c, xftfont.c, xmenu.c, xml.c:
 +      * xselect.c, xsettings.c, xterm.c:
 +      Remove Q vars that represent symbols (e.g., Qnil, Qt, Qemacs).
 +      These names are now defined automatically by make-docfile.
 +      * alloc.c (init_symbol): New function.
 +      (Fmake_symbol): Use it.
 +      (c_symbol_p): New function.
 +      (valid_lisp_object_p, purecopy): Use it.
 +      * alloc.c (marked_pinned_symbols):
 +      Use make_lisp_symbol instead of make_lisp_ptr.
 +      (garbage_collect_1): Mark lispsym symbols.
 +      (CHECK_ALLOCATED_AND_LIVE_SYMBOL): New macro.
 +      (mark_object): Use it.
 +      (sweep_symbols): Sweep lispsym symbols.
 +      (symbol_uses_obj): New function.
 +      (which_symbols): Use it.  Work for lispsym symbols, too.
 +      (init_alloc_once): Initialize Vpurify_flag here; no need to wait,
 +      since Qt's address is already known now.
 +      (syms_of_alloc): Add lispsym count to symbols_consed.
 +      * buffer.c (init_buffer_once): Compare to Qnil, not to make_number (0),
 +      when testing whether storage is all bits zero.
 +      * dispextern.h (struct image_type):
 +      * font.c (font_property_table):
 +      * frame.c (struct frame_parm_table, frame_parms):
 +      * keyboard.c (scroll_bar_parts, struct event_head):
 +      * xdisp.c (struct props):
 +      Use XSYMBOL_INIT (Qfoo) and struct Lisp_Symbol * rather than &Qfoo and
 +      Lisp_Object *, since Qfoo is no longer an object whose address can be
 +      taken.  All uses changed.
 +      * eval.c (run_hook): New function.  Most uses of Frun_hooks changed to
 +      use it, so that they no longer need to take the address of a Lisp sym.
 +      (syms_of_eval): Don't use DEFSYM on Vrun_hooks, as it's a variable.
 +      * frame.c (syms_of_frame): Add defsyms for the frame_parms table.
 +      * keyboard.c (syms_of_keyboard): Don't DEFSYM Qmenu_bar here.
 +      DEFSYM Qdeactivate_mark before the corresponding var.
 +      * keymap.c (syms_of_keymap): Use DEFSYM for Qmenu_bar and Qmode_line
 +      instead of interning their symbols; this avoids duplicates.
 +      (LISP_INITIALLY, TAG_PTR)
 +      (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END, XSYMBOL_INIT):
 +      New macros.
 +      (LISP_INITIALLY_ZERO): Use it.
 +      (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol)
 +      (EXFUN, DEFUN_ARGS_MANY, DEFUN_ARGS_UNEVALLED, DEFUN_ARGS_*):
 +      Move decls up, to avoid forward uses.  Include globals.h earlier, too.
 +      (make_lisp_symbol): New function.
 +      (XSETSYMBOL): Use it.
 +      (DEFSYM): Now just a placeholder for make-docfile.
 +      * lread.c (DEFINE_SYMBOLS): Define, for globals.h.
 +      (intern_sym): New function, with body taken from old intern_driver.
 +      (intern_driver): Use it.  Last arg is now Lisp integer, not ptrdiff_t.
 +      All uses changed.
 +      (define_symbol): New function.
 +      (init_obarray): Define the C symbols taken from lispsym.
 +      Use plain DEFSYM for Qt and Qnil.
 +      * syntax.c (init_syntax_once): No need to worry about
 +      Qchar_table_extra_slots.
 +
 +2015-01-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      'temacs -nw' should not call missing functions
 +      Without this patch, "temacs -nw" fails with the diagnostic
 +      "emacs: Symbol's function definition is void: frame-windows-min-size"
 +      and messes up the tty's state.
 +      * frame.c (Fframe_windows_min_size): New placeholder function.
 +      (syms_of_frame): Define it.
 +      * window.c (Fwindow__sanitize_window_sizes): New placeholder.
 +      (syms_of_window): Define it.
 +
 +      Less 'make' chatter for lisp dir
 +      * Makefile.in (%.elc): Adjust to compile-onefile change in
 +      ../lisp/Makefile.in.
 +
 +      batch write-region no longer says "Wrote FOO"
 +      This cuts down on 'make' chatter a bit.
 +      * fileio.c (Fwrite_region):
 +      Don't output "Wrote /whatever/foo.elc" if noninteractive.
 +
 +2015-01-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Revert previous change to produce_composite_glyph
 +      * term.c (produce_composite_glyph): Revert previous change (Bug#19496).
 +
 +      Pacify gcc -Wparentheses
 +      * frame.c (x_set_frame_parameters): Add parens (Bug#19428).
 +
 +2015-01-03  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (x_set_frame_parameters): Call Fset_frame_size only if
 +      f->can_x_set_window_size is true.
 +      * xterm.c (x_set_window_size_1): Call change_frame_size with
 +      text sizes instead of pixel sizes (Bug#19428).
 +
 +2015-01-01  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (pos_visible_p): Fix up the X coordinate for
        right-to-left screen lines.  (Bug#19473)
  
 -2014-12-28  Eli Zaretskii  <eliz@gnu.org>
 +2015-01-01  Eli Zaretskii  <eliz@gnu.org>
  
        * w32proc.c (Fw32_get_codepage_charset): Doc fix.  (Bug#19458)
  
 +2014-12-31  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Simplify setfattr use by assuming GNU make
 +      * Makefile.in (PAXCTL_if_present, SETFATTR_if_present): New macros.
 +      (emacs$(EXEEXT), temacs$(EXEEXT), bootstrap-emacs$(EXEEXT)): Use them.
 +      Simplify by using GNU make rather than shell conditionals,
 +      by using ln -f rather than rm -f followed by ln,
 +      and by preferring $@ to spelling out the destination.
 +
 +2014-12-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * sysdep.c [WINDOWSNT]: Include sys/socket.h, without which this
 +      file doesn't compile on MS-Windows.
 +
 +2014-12-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Allow return value of system-name to vary.  (Bug#19438)
 +      * filelock.c (current_lock_owner):
 +      * xrdb.c (get_environ_db):
 +      * xterm.c (same_x_server):
 +      * xterm.c (x_term_init):
 +      Prefer (system-name) to system-name, and avoid naming
 +      locals 'system-name'.
 +      * editfns.c (cached_system_name): New static var.
 +      (init_and_cache_system_name): New function.
 +      (init_editfns, Fsystem_name): Use it.
 +      (syms_of_editfns): Initialize it and Vsystem_name to the same value.
 +      * sysdep.c [HAVE_SOCKETS]: Don't include <sys/socket.h>, <netdb.h>.
 +      (h_errno) [TRY_AGAIN && !HAVE_H_ERRNO]: Remove decl.
 +      (init_system_name) [HAVE_SOCKETS]: Don't canonicalize the name.
 +      Don't create a new string if the current value is already correct.
 +
 +2014-12-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix produce_composite_width typo
 +      * term.c (produce_composite_glyph):
 +      Fix typo that confused number of columns for pixel width.
 +
  2014-12-28  Paul Eggert  <eggert@Penguin.CS.UCLA.EDU>
  
 +      Wrap dll functions more simply
 +      * decompress.c, gnutls.c, image.c, xml.c:
 +      If WINDOWSNT, use '#define FOO fn_FOO' to wrap dll functions,
 +      rather than the inverse when not WINDOWSNT.  This isolates the
 +      fn_* business into the WINDOWSNT-specific section of the code,
 +      which makes it easier to maintain the generic code.
 +      * decompress.c (DEF_ZLIB_FN, LOAD_ZLIB_FN):
 +      * gnutls.c (DEF_GNUTLS_FN, LOAD_GNUTLS_FN):
 +      * image.c (DEF_IMGLIB_FN, LOAD_IMGLIB_FN):
 +      * xml.c (DEF_XML2_FN, LOAD_XML2_FN):
 +      Remove.  All uses replaced by DEF_DLL_FN.
 +      * decompress.c (inflateInit2): Remove; no longer needed.
 +      * w32.h (DEF_DLL_FN, LOAD_DLL_FN): New macros.
 +
        Port memory-full checking to GnuTLS 3.3
        Instead of using gnutls_global_set_mem_functions, check every call
        to a GnuTLS function that might return an indication of memory
        All uses removed.
        (check_memory_full): New function.
        (emacs_gnutls_handshake, emacs_gnutls_handle_error)
 -      (gnutls_make_error, Fgnutls_boot): Use it.
 +      (gnutls_make_error, gnutls_certificate_details, Fgnutls_peer_status)
 +      (Fgnutls_boot): Use it.
        (emacs_gnutls_global_init): Avoid gnutls_global_set_mem_functions.
  
 -2014-12-25  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-27  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix parse_settings to match internal documentation
 +      * xsettings.c (parse_settings): Return the number of settings seen.
 +      Count the settings changes accurately.
 +      (read_settings): Don't confuse number of settings changes with
 +      the return code from XGetWindowProperty.
 +
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (set_iterator_to_next) <GET_FROM_STRING>: Limit search in
        composition_compute_stop_pos to the number of characters in the
  
        * dispextern.h (struct it) <end_charpos>: Improve commentary.
  
 -2014-12-24  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-12-27  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsimage.m (allocInitFromFile:): Initialize bmRep.
        (dealloc): Release bmRep.
        (setPixmapData): Rename local variable bmRep to avoid compiler
        warning.
  
 -2014-12-24  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-12-27  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * nsterm.h (EmacsImage): Remove imageListNext, refCount, reference,
 -      imageListSetNext, imageListNext.
 +      * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert
 +      when going to fullscreen (Bug#0x180004f).
  
 -      * nsimage.m (ImageList, imageListNext, imageListSetNext:)
 -      (reference): Remove.
 -      (allocInitFromFile:): Remove searching ImageList and calling
 -      reference (Bug#18918).
 -      (dealloc): Remove handling if ImageList.
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * window.c (Fwindow_body_width): Doc fix.  (Bug#19395)
 +
 +2014-12-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * buffer.c (syms_of_buffer) <Vafter_change_functions>: fix docstring.
 +
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * gnutls.c (gnutls_init): Fix deprecation warning from GCC.
 +
 +2014-12-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xselect.c, xsettings.c
 +      * xselect.c (x_get_local_selection, struct selection_data)
 +      (x_selection_request_lisp_error, struct prop_location)
 +      (x_handle_selection_request, x_convert_selection)
 +      (waiting_for_other_props_on_window, expect_property_change)
 +      (wait_for_property_change, x_handle_property_notify)
 +      (x_get_foreign_selection, x_get_window_property)
 +      (receive_incremental_selection)
 +      (x_get_window_property_as_lisp_data)
 +      (lisp_data_to_selection_data, Fx_get_selection_internal)
 +      (x_send_client_event):
 +      * xselect.c, xterm.h (x_handle_dnd_message):
 +      * xsettings.c (dpyinfo_valid, parse_settings, read_settings)
 +      (apply_xft_settings, read_and_apply_settings)
 +      (xft_settings_event, init_gsettings, init_xsettings)
 +      (syms_of_xsettings):
 +      Use bool for boolean.
 +      * xselect.c (x_get_window_property): Omit last arg, which was an
 +      unused boolean.
 +      * xsettings.c (apply_xft_settings): Remove 2nd arg, which was
 +      always true.  All callers changed.
 +
 +2014-12-26  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32proc.c (sys_spawnve, get_lcid_callback): Use strcpy instead
 +      of strcat.
 +
 +      * w32menu.c (add_menu_item): Use stpcpy instead of strcat.
 +
 +      * w32.c (sys_readdir, stat_worker, symlink): Use strcpy instead of
 +      strcat.
 +
 +2014-12-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xsmfns.c
 +      * xsmfns.c, xterm.h (x_session_have_connection):
 +      * xsmfns.c (doing_interact, smc_interact_CB, Fhandle_save_session):
 +      Use bool for boolean.
 +      (x_session_initialize, Fhandle_save_session):
 +      Prefer NILP (x) to EQ (x, Qnil).
 +
 +2014-12-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * callproc.c (child_setup):
 +      * dbusbind.c (xd_signature_cat):
 +      * doc.c (get_doc_string, Fsnarf_documentation):
 +      * editfns.c (Fuser_full_name):
 +      * frame.c (xrdb_get_resource):
 +      * gtkutil.c (xg_get_file_with_chooser):
 +      * tparam.c (tparam1):
 +      * xfns.c (xic_create_fontsetname):
 +      * xrdb.c (gethomedir, get_user_db, get_environ_db):
 +      * xsmfns.c (smc_save_yourself_CB):
 +      Rewrite to avoid the need for strcat, typically by using stpcpy
 +      and/or lispstpcpy.  strcat tends to be part of O(N**2) algorithms.
 +      * doc.c (sibling_etc):
 +      * xrdb.c (xdefaults):
 +      Now a top-level static constant.
 +
 +2014-12-23  Didier Verna  <didier@didierverna.net> (tiny change).
 +
 +      * nsselect.m (Fns_selection_owner_p): Return a Lisp boolean, not a
 +      C one (Bug#19396).
  
  2014-12-22  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert
 -      when going to fullscreen (Bug#19427).
 +      * xterm.c (x_bitmap_icon): Partly revert change from 2014-03-21 which
 +      breaks icon setting for Gtk+ except for initial frame (Bug#19403).
 +
 +2014-12-22  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bool for boolean in xterm.c
 +      * frame.h, nsterm.m, w32term.c, w32term.h, xterm.c:
 +      (x_set_window_size, x_bitmap_icon):
 +      * nsterm.m (ns_frame_raise_lower, x_new_font):
 +      * termhooks.h (struct terminal.toggle_invisible_pointer_hook)
 +      (struct terminal.frame_raise_lower_hook):
 +      * w32term.c (w32_frame_raise_lower):
 +      * xterm.c, xterm.h (x_text_icon):
 +      * xterm.c (x_update_window_begin, x_update_window_end)
 +      (x_update_end, x_after_update_window_line)
 +      (x_set_glyph_string_gc, x_draw_glyph_string_background)
 +      (x_draw_glyph_string_foreground)
 +      (x_draw_composite_glyph_string_foreground)
 +      (x_alloc_lighter_color, x_draw_relief_rect)
 +      (x_draw_glyph_string_box, x_draw_image_relief)
 +      (x_draw_image_glyph_string, x_draw_stretch_glyph_string)
 +      (x_draw_underwave, x_draw_glyph_string, x_show_hourglass)
 +      (x_hide_hourglass):
 +      (XFillRectangle) [HAVE_GTK3]:
 +      (XTtoggle_invisible_pointer, frame_highlight, frame_unhighlight)
 +      (x_focus_changed, x_find_modifier_meanings, note_mouse_movement)
 +      (XTmouse_position, xt_action_hook, xt_horizontal_action_hook)
 +      (x_send_scroll_bar_event, xm_scroll_callback)
 +      (xg_scroll_callback, xaw_jump_callback, xaw_scroll_callback)
 +      (x_create_toolkit_scroll_bar)
 +      (x_create_horizontal_toolkit_scroll_bar)
 +      (x_set_toolkit_horizontal_scroll_bar_thumb, x_scroll_bar_create)
 +      (x_scroll_bar_set_handle, XTset_vertical_scroll_bar)
 +      (XTset_horizontal_scroll_bar, x_scroll_bar_expose)
 +      (x_scroll_bar_handle_click, x_scroll_bar_note_movement)
 +      (x_scroll_bar_report_motion)
 +      (x_horizontal_scroll_bar_report_motion, x_net_wm_state)
 +      (handle_one_xevent, XTread_socket, x_draw_bar_cursor)
 +      (x_draw_window_cursor, x_clear_errors)
 +      (x_trace_wire, x_new_font, x_set_offset, wm_supports)
 +      (set_wm_state, x_set_sticky, get_current_wm_state)
 +      (do_ewmh_fullscreen, x_handle_net_wm_state)
 +      (x_check_expected_move, x_sync_with_move, x_wait_for_event)
 +      (x_set_window_size_1, XTframe_raise_lower)
 +      (x_make_frame_visible, x_iconify_frame)
 +      (x_timeout_atimer_activated_flag, same_x_server, x_display_ok)
 +      (x_term_init, x_process_timeouts, x_activate_timeout_atimer)
 +      (x_delete_terminal, x_initialize, syms_of_xterm):
 +      Use bool for boolean.
 +
 +2014-12-20  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * composite.h (struct composition.width): Now int
 +      instead of unsigned short, as we prefer signed integers.
 +
 +      Let charset tick grow past USHRT_MAX
 +      * charset.c, charset.h (charset_ordered_list_tick):
 +      Now EMACS_UINT, not unsigned short.
 +      * fontset.c (reorder_font_vector): Allow the tick to grow to the
 +      maximum representable Emacs integer value before wrapping it around.
 +
 +      Simplify unexec file mode setting
 +      * unexaix.c, unexcoff.c, unexelf.c, unexmacosx.c:
 +      Don't include <sys/stat.h> when no longer needed.
 +      (unexec): Create file with correct mode in the first place,
 +      rather than overwriting the mode later and fiddling with the
 +      global umask in the mean time.  Avoid bogus usage like
 +      'umask (777)', which should have been 'umask (0777)'.
 +      (mark_x): Remove. All callers removed.
 +
 +2014-12-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor cleanups for Lisp objects and symbols
 +      * alloc.c (next_vector, set_next_vector):
 +      * lisp.h (lisp_h_INTEGERP, make_number, XFASTINT, make_natnum):
 +      (lisp_h_make_number) [USE_LSB_TAG]:
 +      Use Lisp_Int0 instead of the mystery constant 0.
 +      * alloc.c (mark_object): Always set and use po; that's simpler.
 +      (CHECK_LIVE, CHECK_ALLOCATED_AND_LIVE):
 +      Properly parenthesize definientia.
 +      * bidi.c (bidi_initialize):
 +      * buffer.c (init_buffer_once):
 +      * nsfns.m (syms_of_nsfns):
 +      * nsmenu.m (syms_of_nsmenu):
 +      * nsselect.m (syms_of_nsselect):
 +      Prefer DEFSYM to defining by hand.
 +      * buffer.c (syms_of_buffer): Omit unneeded staticpros.
 +      * data.c: Fix too-long line.
 +      * lisp.h (DECLARE_GDB_SYM): New macro.
 +      (DEFINE_GDB_SYMBOL_BEGIN): Use it.
 +      (DEFINE_GDB_SYMBOL_BEGIN, DEFINE_GDB_SYMBOL_END) [!MAIN_PROGRAM]:
 +      Declare the symbol, so it's visible to everywhere lisp.h is included.
 +      Move forward decls as far forward as they can go,
 +      to allow future changes to use them.
 +
 +2014-12-18  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * gnutls.c: Include gnutls.h.
 +      This to check syms_of_gnutls's API even when !HAVE_GNUTLS.
 +      * image.c (svg_load): Fix pointer signedness.
 +
 +2014-12-18  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (frame_windows_min_size): New argument IGNORE.
 +      (adjust_frame_size): When called from change_frame_size call
 +      frame_windows_min_size with IGNORE Qt so we can ignore size
 +      restrictions.
  
  2014-12-18  Eli Zaretskii  <eliz@gnu.org>
  
 -      * window.c (Fwindow_body_width): Doc fix.  (Bug#19395)
 +      * font.c (Ffont_info): Add more font information to the vector
 +      returned by the function, inspired by query-font.  Doc fix.
 +      (Bug#19395)
 +
 +2014-12-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (input_was_pending): New var.
 +      (read_char): Use it to make sure we only skip redisplay when we can't
 +      keep up with the repeat rate.
 +
 +2014-12-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (swallow_events): Don't redisplay if there's input pending.
 +
 +2014-12-17  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * image.c (svg_load): Watch out for nil value of current buffer's
 +      filename.  Re-enable filename thing for not-a-file case.
 +
 +2014-12-17  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      Partially disabled previous change.
 +
 +      * image.c (svg_load): Temporarily disabled filename thing for
 +      not-a-file case as it can cause crashs.
 +
 +2014-12-17  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      Fix problem with images referenced within svg files. (bug#19373)
 +
 +      * image.c: Additional parameter 'filename' for
 +      svg_load_image. Include "buffer.h".  Define library function
 +      rsvg_handle_set_base_uri for WINDOWSNT.
 +      (init_svg_functions): Initialize rsvg_handle_set_base_uri.
 +      (fn_rsvg_handle_set_base_uri): Define fn_rsvg_handle_set_base_uri.
 +      (svg_load): Pass a filename to svg_load_image: either name of
 +      actual file or of current buffer's file.
 +      (svg_load_image): New parameter 'filename', used for setting
 +      base_uri, necessary for loading referenced images. (bug#19373)
 +
 +2014-12-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * lread.c (init_obarray): Declare Qt as special.
 +      This fixes a typo in the 2012-05-15 patch that
 +      tried to declare Qt as special.
  
  2014-12-15  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      * buffer.c (syms_of_buffer) <Vafter_change_functions>: fix docstring.
 +      Various fixes to use bool type and constants.
 +      * dispnew.c (update_single_window): Remove arg `force_p' since it's
 +      always true.
 +      * xfaces.c (clear_face_cache): Use bool for the argument type.
  
 -2014-12-13  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-15  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * gnutls.c (gnutls_init): Fix deprecation warning from GCC.
 +      Correct same_at_end when restoring window points
 +      * fileio.c (Finsert_file_contents): Compute same_at_end character
 +      position using the old buffer size, not the new one, since
 +      restore_window_points wants the old size.
 +      Fixes: debbugs:19161
 +
 +2014-12-14  Alan Mackenzie  <acm@muc.de>
 +
 +      New feature optionally to accelerate auto-repeated scrolling.
 +
 +      * xdisp.c: Remove "static" from declaration of Qfontification_functions.
 +
 +      * window.c (window_scroll): Bind fontification-functions to nil
 +      when scrolling by whole screens and
 +      fast-but-imprecise-scrolling is non-nil.
 +      (syms_of_window): New DEFVAR_BOOL fast-but-imprecise-scrolling.
  
 -2014-12-12  Eli Zaretskii  <eliz@gnu.org>
 +      * lisp.h (bool): Declare Qfontification_functions extern.
 +
 +2014-12-14  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Load system's default trusted Certificate Authorities if available.
 +      * gnutls.c (gnutls_certificate_set_x509_system_trust)
 +      [GNUTLS >= 3.0.20]: Declare for WINDOWSNT.
 +      (init_gnutls_functions)(gnutls_certificate_set_x509_system_trust)
 +      [GNUTLS >= 3.0.20]: Load from shared library for WINDOWSNT.
 +      (fn_gnutls_certificate_set_x509_system_trust) [!WINDOWSNT]:
 +      Define new macro.
 +      (Fgnutls_boot) [GNUTLS >= 3.0.20]:
 +      Call gnutls_certificate_set_x509_system_trust.  Log an error message if
 +      it fails.
 +
 +2014-12-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * regex.c (analyze_first): Rename from analyze_first.
 +
 +2014-12-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * alloc.c (XMALLOC_BASE_ALIGNMENT): Use max_align_t instead of
 +      a hack involving a union.
 +
 +2014-12-13  Eli Zaretskii  <eliz@gnu.org>
  
        * gnutls.c (Fgnutls_available_p, syms_of_gnutls):
        Move gnutls-available-p out of the HAVE_GNUTLS conditional, and define
        them only once.
  
 -2014-12-11  Teodor Zlatanov  <tzz@lifelogs.com>
 +2014-12-13  Teodor Zlatanov  <tzz@lifelogs.com>
  
        * emacs.c (main): Always include gnutls.h and run syms_of_gnutls.
  
        integration is not available, instead of erroring out.
        (Bug#19346)
  
 -2014-12-10  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-13  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (move_it_in_display_line_to, display_line):
        Don't disallow overflow-newline-into-fringe when word-wrap is in
        effect.  (Bug#19300)
  
 -2014-12-04  Lee Duhem  <lee.duhem@gmail.com>  (tiny change)
 +2014-12-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * fileio.c: Better preserve window-points during revert (bug#19161).
 +      (Qget_buffer_window_list): New var.
 +      (get_window_points_and_markers, restore_window_points): New functions.
 +      (Finsert_file_contents): Use them to save and restore window-points.
 +
 +2014-12-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xterm.c (x_delete_terminal): Call emacs_close for X connection
 +      descriptor if called from x_connection_closed and always delete
 +      this descriptor from keyboard waiting set (Bug#19147).
 +
 +2014-12-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (BIDI_CACHE_MAX_ELTS_PER_SLOT): New macro.
 +      (bidi_cache_max_elts): New global variable.
 +      (bidi_shelve_header_size): Add the sizeof bidi_cache_max_elts.
 +      (bidi_cache_shrink, bidi_initialize): Reset bidi_cache_max_elts to
 +      its initial value.
 +      (bidi_cache_search): Handle overflown cache.  Improve commentary.
 +      (bidi_cache_ensure_space): Limit allocations to the current value
 +      of bidi_cache_max_elts.  Force xpalloc not to over-allocate.
 +      If less than a full BIDI_CACHE_CHUNK is left to the limit, decrease
 +      the increment to not exceed the limit.
 +      (bidi_cache_iterator_state): Now returns non-zero if succeeded to
 +      cache, zero otherwise (meaning the cache overflowed).  In the
 +      latter case, set bidi_cache_last_idx to -1.
 +      (bidi_peek_at_next_level): Handle overflown cache.
 +      (bidi_push_it): Increase the cache limit for iterating the new object.
 +      (bidi_pop_it): Decrease the cache limit back to previous value.
 +      (bidi_shelve_cache): Shelve the current value of the cache limit.
 +      (bidi_unshelve_cache): Restore the value of cache limit.
 +      (bidi_find_bracket_pairs): If the cache overflows while looking
 +      for the paired bracket, give up and let bidi_resolve_neutrals
 +      process the bracket as a simple neutral.  (Bug#19322)
 +      (bidi_find_other_level_edge): If the cache overflows, fall back on
 +      Plan B, which effectively stops the reordering and restarts it on
 +      the next character (after resetting the cache).
 +      (bidi_move_to_visually_next): When the cache overflows, reset it
 +      after processing the last cached character.
 +
 +2014-12-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix glitches in gnutls.c, mostly memory-related
 +      * gnutls.c: Sort macro definitions by name.
 +      (fn_gnutls_transport_set_errno): Omit unreachable definition.
 +      (fn_gnutls_x509_crt_get_signature): Omit unused symbol.
 +      (gnutls_hex_string): Arg is now unsigned char *, to avoid a cast.
 +      Prefer ptrdiff_t for sizes.  Check for arithmetic overflow when
 +      calculating string length.  Use make_uninit_string, to avoid
 +      copying the string.  Cast the char, not the pointer.
 +      (gnutls_certificate_details): Use xmalloc and xfree, not malloc
 +      and free.  Work even for dates past the year 9999.  Use void *
 +      for buffers, to avoid casts.
 +
 +2014-12-09  Andy Moreton  <andrewjmoreton@gmail.com>  (tiny change)
 +
 +      * gnutls.c (gnutls_protocol_get_name): Fix a copy/paste typo.
 +
 +2014-12-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (Fgnutls_peer_status): Return the key exchange, cipher
 +      and MAC algorithms.
 +
 +2014-12-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * process.c: Whitespace and line-break nitpicks.
 +
 +2014-12-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * gnutls.c (gnutls_certificate_details): The :signature isn't
 +      that useful, so remove it.
 +      (gnutls_certificate_details): Clean up whitespace slightly.
 +      (Fgnutls_peer_status): Return the Diffie-Hellman prime bits for
 +      the connection.
 +      (gnutls_certificate_details): Put :signature-algorithm back again,
 +      which was removed by mistake.
 +      (emacs_gnutls_handle_error): Fatal errors should be on level 1, so
 +      that they are not messaged by default (bug#16253).
 +      (Fgnutls_error_fatalp): Doc fix (bug#18210).
 +
 +      * gnutls.c: Add Windows specs for gnutls_dh_get_prime_bits.
 +
 +2014-12-07  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsimage.m (setPixmapData): Make bmRep local so class member is not
 +      set (Bug#19133).
 +
 +2014-12-05  Lee Duhem  <lee.duhem@gmail.com>  (tiny change)
  
        * eval.c (Fsignal): Remove duplicate test.
        (Fautoload_do_load): Fix up docstring.
  
 -2014-12-02  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-12-05  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsterm.m (represented_filename, represented_frame): New variables.
        (ns_set_represented_filename): New function.
        * nsfns.m (ns_set_name_as_filename): Don't set represented filename
        at once, call ns_set_represented_filename instead.
  
 -2014-11-27  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-05  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispextern.h (enum bidi_dir_t): Force NEUTRAL_DIR to be zero.
 +      (struct bidi_stack): Reduce size by using bit fields and by
 +      packing sos, override, and isolate_status into a single 8-bit
 +      byte called 'flags'.
 +
 +      * bidi.c (ISOLATE_STATUS, OVERRIDE): New macros.
 +      (bidi_push_embedding_level): Construct flags from individual
 +      bits.  Adapt to changes in prev_for_neutral and next_for_neutral
 +      members.
 +      (bidi_pop_embedding_level): Use ISOLATE_STATUS.  Extract 'sos'
 +      from flags.  Adapt to changes in prev_for_neutral,
 +      next_for_neutral, and last_strong members.
 +      (bidi_line_init): Initialize flags to zero.
 +      (bidi_resolve_explicit, bidi_resolve_weak, bidi_resolve_brackets)
 +      (bidi_resolve_neutral): Use ISOLATE_STATUS and OVERRIDE.
 +
 +2014-12-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * eval.c (backtrace_eval_unrewind): Rewind also the excursions.
 +      (Fapply): Try and simplify the control flow.
 +
 +2014-12-03  Chris Zheng  <chriszheng99@gmail.com>  (tiny change)
 +
 +      * gnutls.c (init_gnutls_functions, gnutls_certificate_details):
 +      Use gnutls_sign_get_name directly because
 +      gnutls_sign_algorithm_get_name is a macro on MinGW (bug#19231).
 +      (init_gnutls_functions): Load missing gnutls_server_name_set.
 +
 +2014-12-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_find_first_overridden): New function.
 +
 +      * xdisp.c (Fbidi_find_overridden_directionality): New function.
 +      (syms_of_xdisp): Defsubr it.
 +
 +      * dispextern.h (bidi_find_first_overridden): Add prototype.
 +
 +2014-12-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsimage.m (initFromSkipXBM:width:height:flip:length:): Set bmRep
 +      to nil after release (Bug#9133).
 +
 +2014-11-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port better to AddressSanitizer.
 +      These changes suffice for temacs on x86-64 with GCC 4.9.2 and
 +      -fsanitize=address.
 +      * alloc.c (valid_pointer_p) [ADDRESS_SANITIZER]:
 +      Return -1 or 0, as the pipe trick doesn't work.
 +      * alloc.c (relocatable_string_data_p, mark_object, sweep_symbols):
 +      * data.c (Ffset):
 +      * print.c (print_object):
 +      When a pointer-check primitive returns -1, do not assume this
 +      means the pointer is valid or that the underlying system has failed.
 +      It could just be that addresses are being sanitized so Emacs can't
 +      test for pointer validity.
 +      * lisp.h (defined_GC_CHECK_STRING_BYTES): New constant.
 +      (USE_STACK_STRING) [GC_CHECK_STRING_BYTES]: Now false, since the
 +      string validity checker doesn't work on stack-based strings.
 +
 +2014-11-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve clarity of USE_LSB_TAG definition.
 +      Reported by Lee Duhem.  Suggested by Andreas Schwab in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-11/msg02222.html
 +      * lisp.h (USE_LSB_TAG): Define in terms of the (simpler)
 +      VAL_MAX / 2 rather than in terms of the (more complicated)
 +      EMACS_INT_MAX >> GCTYPEBITS, and adjust commentary to match.
 +
 +2014-11-29  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (handle_single_display_spec): When ignoring a fringe
        bitmap display, reset the ignore_overlay_strings_at_pos_p flag.
        (next_element_from_buffer): When done with overlays, reset the
        ignore_overlay_strings_at_pos_p flag.  (Bug#19201)
  
 -2014-11-25  Eli Zaretskii  <eliz@gnu.org>
 +2014-11-29  Eli Zaretskii  <eliz@gnu.org>
  
        * w32fns.c (Fw32_shell_execute): Convert forward slashes in
        DOCUMENT to backslashes, if DOCUMENT is a file.  (Bug#19141)
  
 -2014-11-25  Ulrich Müller  <ulm@gentoo.org>
 +2014-11-29  Ulrich Müller  <ulm@gentoo.org>
  
        * Makefile.in (temacs$(EXEEXT)): Use consistent flag settings
        for paxctl and setfattr. Fixes temacs startup failure with
        grsecurity/PaX enabled Linux kernel (bug#19067).
  
 -2014-11-17  Oscar Fuentes  <ofv@wanadoo.es>
 +2014-11-27  Oscar Fuentes  <ofv@wanadoo.es>
  
 -      * src/w32.c: Use MINGW_W64 instead of _W64.
 +      * w32.c, w32heap.c, w32term.c:
 +      Use MINGW_W64 instead of _W64.
  
 -      * src/w32term.c: Likewise.
 -
 -2014-11-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-11-27  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * frame.c (Fhandle_switch_frame): Deactivate shift-region (bug#19003).
  
 -2014-11-15  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-11-26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * nsterm.m (ns_send_appdefined): Check for application defined
 -      event on Cocoa (Bug#18993).  Backport from trunk.
 +      * gnutls.c (gnutls_ip_address_p): New function.
 +      (Fgnutls_boot): Only send SNI if the host name is not an IP address.
  
 -2014-11-15  Eli Zaretskii  <eliz@gnu.org>
 +2014-11-26  Toke Høiland-Jørgensen  <toke@toke.dk>  (tiny change)
  
 -      * window.c (window_scroll_pixel_based): Avoid truncation/rounding
 -      errors in computing the number of pixels to scroll.
 -      Suggested by Kelly Dean <kelly@prtime.org>.  (Bug#19060)
 +      * gnutls.c (Fgnutls_boot): Send the server name over (bug#18208).
  
 -2014-11-15  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-11-25  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * nsmenu.m (update_frame_tool_bar): If tool bar changes height,
 -      call updateFrameSize.
 +      Fix gnutls problems caught by static checking.
 +      * gnutls.c (Fgnutls_boot): Remove unused local.
 +      (Fgnutls_boot): Fix pointer signedness.
  
 -      * nsterm.m (setFrame:): Remove call to display (Bug#18757).
 +2014-11-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -2014-11-14  Jan Djärv  <jan.h.d@swipnet.se>
 +      * gnutls.c (gnutls_certificate_details): Don't include certain
 +      certificate details on older gnutls versions (bug#19168).
 +      (syms_of_gnutls): Export gnutls_peer_status_warning_describe.
 +      (gnutls_certificate_details): Reversed check in last checkin.
  
 -      * nsfns.m (x_set_foreground_color, x_set_background_color)
 -      (x_set_cursor_color, Fxw_color_values): Block/unblock input,
 -      use SET_FRAME_GARBAGED instead of redraw_frame (Bug#19036).
 +2014-11-25  Teodor Zlatanov  <tzz@lifelogs.com>
  
 -2014-11-09  Eli Zaretskii  <eliz@gnu.org>
 +      * gnutls.c (Fgnutls_peer_status): Check GNUTLS_INITSTAGE, not gnutls_p.
 +      (Fgnutls_peer_status_warning_describe): Add function to describe a
 +      peer verification warning symbol.
 +      (Fgnutls_peer_status): Use it.
 +      (Fgnutls_boot): Use it.  Minor logging fixes.
  
 -      * fileio.c (Finsert_file_contents): Invalidate buffer caches also
 -      when the inserted text does not need decoding.  (Bug#18982)
 +2014-11-24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * w32heap.c (allocate_heap): Set the lower limit of heap at 8MB.
 -      (Bug#18995)
 +      * gnutls.c: Fix compilation warnings given fix --enable-gcc-warnings.
  
 -2014-11-09  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-11-24  Glenn Morris  <rgm@gnu.org>
  
 -      * nsterm.h (EmacsScroller): judge returns bool.
 +      * emacs.c (main) <--version>: Make use of PACKAGE_NAME.
  
 -      * nsterm.m (ns_set_vertical_scroll_bar): Release bar.
 -      (ns_judge_scroll_bars): Only set removed if judge returns true.
 -      (judge): Returns bool == condemned.  Remove self from window.
 -      (setPosition:portion:whole:): Remove raise SIGIO (Bug#18757).
 +      * Makefile.in (emacs.res): Use ../nt rule, rather than duplicating it.
 +      (ntsource, WINDRES, EMACS_MANIFEST): Remove, now unused.
  
 -2014-11-08  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-11-23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
  
 -      * nsterm.m (init): Replace OSX 10.9 check with IMPL_COCOA.
 -      (run): Ditto.  Only use non-system event loop if OSX version is
 -      exactly 10.9 (Bug#18993).
 -      (ns_set_vertical_scroll_bar): Don't call bar setPosition: unless
 -      needed (Bug#18757).
 +      * gnutls.c: Fix Windows function definition of
 +      gnutls_x509_crt_get_fingerprint.
  
 -2014-11-07  Michael Albinus  <michael.albinus@gmx.de>
 +      * gnutls.c: Fix Windows return value for gnutls_pk_algorithm_get_name.
  
 -      * callproc.c (encode_current_directory): Support handling of file
 -      names prepended by "/:".  (Bug#18891)
 +      * gnutls.c (Fgnutls_boot): Save certificate for later inspection.
  
 -2014-11-06  Alan Mackenzie  <acm@muc.de>
 +      * process.h: Added more fields to Lisp_Process to track
 +      certificate details.
  
 -      * syntax.c (back_comment): Fix off-by-one error (bug#18022).
 +      * gnutls.c (gnutls_hex_string, gnutls_certificate_details)
 +      (Fgnutls_peer_status): New functions to export TLS certificate
 +      details to Emacs Lisp.
  
 -2014-11-06  Dima Kogan  <dima@secretsauce.net>
 +2014-11-23  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (gtk_adjustment_configure): Define for Gtk+ < 2.14.
 +      (xg_set_toolkit_horizontal_scroll_bar_thumb): Remove wrong version
 +      check for gtk_adjustment_configure (Bug#19149).
 +      (gtk_adjustment_configure): Don't use 2.14 functions (Bug#19149).
 +
 +2014-11-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (emacs.res): Add dependency on icons/hand.cur.  Use $<.
 +
 +2014-11-22  Martin Rudalics  <rudalics@gmx.at>
 +
 +      Don't shrink frame when using desktop-save-mode (Bug#19048).
 +      * w32fns.c (x_set_tool_bar_lines): Always call
 +      x_change_tool_bar_height (Bug#19048).
 +      (x_change_tool_bar_height): Mark frame as garbaged since
 +      adjust_frame_size might not have done that.
 +      * xfns.c (x_set_tool_bar_lines): Always call
 +      x_change_tool_bar_height (Bug#19048).
 +      (x_change_tool_bar_height): Mark frame as garbaged since
 +      adjust_frame_size might not have done that.
 +
 +2014-11-21  Ulf Jasper  <ulf.jasper@web.de>
 +
 +      * xml.c (parse_region): Take care of new optional parameter
 +      'discard-comments' of 'libxml-parse(html|xml)-region'.
 +      (Flibxml_parse_html_region, Flibxml_parse_xml_region):
 +      New optional parameter 'discard-comments'.
 +
 +2014-11-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve time stamp handling, and be more consistent about it.
 +      * editfns.c (invalid_time): New function.
 +      Use it instead of 'error ("Invalid time specification")'.
 +      (time_add, time_subtract, time_arith, Ftime_add, Ftime_less_p)
 +      (decode_float_time, lisp_to_timespec, lisp_time_struct):
 +      New functions.
 +      (make_time_tail, make_time): Remove.  All uses changed to use
 +      new functions or plain list4i.
 +      (disassemble_lisp_time): Return effective length if successful.
 +      Check that LOW is an integer, if it's combined with other components.
 +      (decode_time_components): Decode into struct lisp_time, not
 +      struct timespec, so that we can support a wide set of times
 +      regardless of whether time_t is signed.  Decode plain numbers
 +      as seconds since the Epoch, and nil as the current time.
 +      (lisp_time_argument, lisp_seconds_argument, Ffloat_time):
 +      Reimplement in terms of new functions.
 +      (Fencode_time): Just use list2i.
 +      (syms_of_editfns): Add time-add, time-subtract, time-less-p.
 +      * keyboard.c (decode_timer): Don't allow the new formats (floating
 +      point or nil) in timers.
 +      * systime.h (LO_TIME_BITS): New constant.  Use it everywhere in
 +      place of the magic number '16'.
 +      (struct lisp_time): New type.
 +      (decode_time_components): Use it.
 +      (lisp_to_timespec): New decl.
 +
 +2014-11-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 +
 +      * intervals.h (INTERVAL_WRITABLE_P): Check the `inhibit-read-only'
 +      text property.
 +
 +      * callint.c (Fcall_interactively): Pass in nil as argument to
 +      Fbarf_if_buffer_read_only.
 +
 +      * fileio.c (Finsert_file_contents): Ditto.
 +
 +      * insdel.c (prepare_to_modify_buffer_1): Pass start region in.
 +
 +      * textprop.c (verify_interval_modification): Check buffer
 +      readedness after the last interval.
 +
 +      * buffer.c (Fbarf_if_buffer_read_only): Don't raise an error if
 +      the text at POSITION (new optional argument) has the
 +      `inhibit-read-only' text property set.
 +
 +2014-11-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * window.c (window_scroll_pixel_based): Avoid truncation/rounding
 +      errors in computing the number of pixels to scroll.
 +      Suggested by Kelly Dean <kelly@prtime.org>.  (Bug#19060)
 +
 +2014-11-16  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsmenu.m (update_frame_tool_bar): If tool bar changes height,
 +      call updateFrameSize.
 +
 +      * nsterm.m (setFrame:): Remove call to display (Bug#18757).
 +
 +2014-11-16  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m (x_set_foreground_color, x_set_background_color)
 +      (x_set_cursor_color, Fxw_color_values): Block/unblock input,
 +      use SET_FRAME_GARBAGED instead of redraw_frame (Bug#19036).
 +
 +2014-11-15  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (ns_send_appdefined): Check for application defined
 +      event on Cocoa (Bug#18993).
 +      (run): Restore code before the previous 18993 fix.
 +
 +2014-11-14  David Reitter  <david.reitter@gmail.com>
 +
 +      * nsterm.m (run): Set timeout for event loop to prevent hang.
 +      (Bug#18993)
 +
 +2014-11-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * .gitignore: Add emacs-[1-9]*, to ignore files like emacs-25.0.50.1.
 +
 +2014-11-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xfont.c (xfont_list_pattern): Do not allocate font entity object
 +      for each candidate font but attempt to reuse it from previous improper
 +      candidate, if any.
 +
 +2014-11-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Avoid undefined behavior in color table hashing.
 +      * image.c (CT_HASH_RGB) [COLOR_TABLE_SUPPORT]: Remove, replacing with ...
 +      (ct_hash_rgb) [COLOR_TABLE_SUPPORT]: New function.  All uses changed.
 +      This function avoids undefined behavior with signed shift overflow.
 +
 +2014-11-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fileio.c (Finsert_file_contents): Invalidate buffer caches also
 +      when the inserted text does not need decoding.  (Bug#18982)
 +
 +2014-11-10  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.h (EmacsScroller): judge returns bool.
 +
 +      * nsterm.m (ns_set_vertical_scroll_bar): Release bar.
 +      (ns_judge_scroll_bars): Only set removed if judge returns true.
 +      (judge): Returns bool == condemned.  Remove self from window.
 +      (setPosition:portion:whole:): Remove raise SIGIO (Bug#18757).
 +
 +2014-11-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (command_loop_1): Record this-command in recent-keys.
 +      (Frecent_keys): Rewrite. and add optional `include-cmds' arg.
 +
 +2014-11-09  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (ns_set_vertical_scroll_bar)
 +      (ns_set_horizontal_scroll_bar): Cleanup merge error.
 +
 +2014-11-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xgselect.c (xg_select): Don't assume n_gfds is nonnegative
 +      merely because tmo_in_millisec is nonnegative.  The 1st call
 +      to g_main_context_query could succeed while the 2nd one fails.
 +
 +      * frame.c (Fcan_run_window_configuration_change_hook): Return a value.
 +
 +2014-11-08  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (run): Only use non-system event loop if OSX version is
 +      exactly 10.9 (Bug#18993).
 +      (ns_set_vertical_scroll_bar): Don't call bar setPosition: unless
 +      needed (Bug#18757).
 +
 +2014-11-08  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * callproc.c (encode_current_directory): Support handling of file
 +      names prepended by "/:".  (Bug#18891)
 +
 +2014-11-08  Alan Mackenzie  <acm@muc.de>
 +
 +      * syntax.c (back_comment): Fix off-by-one error (bug#18022).
 +
 +2014-11-08  Dima Kogan  <dima@secretsauce.net>
  
        * xgselect.c (xg_select): Use g_main_context_acquire (bug#18861).
  
 -2014-11-05  Michael Albinus  <michael.albinus@gmx.de>
 +2014-11-08  Michael Albinus  <michael.albinus@gmx.de>
  
        * dired.c (Ffile_attributes): Return Qnil, if Fexpand_file_name
        raises an error.  (Bug#18891)
  
 +2014-11-08  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (adjust_frame_size): Call x_set_window_size only if
 +      f->can_x_set_window_size is set.
 +      (make_frame): Initialize f->can_x_set_window_size and
 +      f->can_run_window_configuration_change_hook.
 +      (Fcan_run_window_configuration_change_hook): New function.
 +      * frame.h (frame): Split `official' into `can_x_set_window_size'
 +      and `can_run_window_configuration_change_hook'.
 +      * nsfns.m (Fx_create_frame): Set f->can_x_set_window_size.
 +      * w32fns.c (Fx_create_frame, x_create_tip_frame):
 +      Set f->can_x_set_window_size.
 +      * window.c (run_window_configuration_change_hook):
 +      Return immediately if either f->can_x_set_window_size or
 +      f->can_run_window_configuration_change_hook are false.
 +      (Fset_window_configuration): Instead of f->official set
 +      f->can_x_set_window_size.
 +      * xfns.c (Fx_create_frame, x_create_tip_frame):
 +      Set f->can_x_set_window_size.
 +
 +2014-11-08  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (EmacsScroller.dealloc): Reinstate, removed at merge
 +      cleanup from 2014-11-01 (Bug#18972).
 +
 +2014-11-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c: Call gui-set-selection instead of x-set-selection.
 +      * xdisp.c (window-scroll-functions): Improve docstring.
 +
 +2014-11-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Uniquify the 'size' symbol.
 +      * frame.c (Qsize):
 +      * w32notify.c (Qsize): Remove.
 +      * lisp.h (Qsize): New decl.
 +      * lread.c (Qsize): Now extern.
 +      * w32notify.c (syms_of_w32notify): No need to defsym.
 +
 +2014-11-07  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * dispnew.c (change_frame_size_1): Fix call of
 +      adjust_frame_size.
 +      * frame.c (Qsize, Qframe_position, Qframe_outer_size)
 +      (Qframe_inner_size, Qexternal_border_size, Qtitle_height)
 +      (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external)
 +      (Qtool_bar_size): New constants.
 +      (frame_inhibit_resize, adjust_frame_size): New argument to
 +      handle case where frame_inhibit_implied_resize is a list.
 +      (Fmake_terminal_frame, Fset_frame_height, Fset_frame_width)
 +      (Fset_frame_size, x_set_left_fringe, x_set_right_fringe)
 +      (x_set_right_divider_width, x_set_bottom_divider_width)
 +      (x_set_vertical_scroll_bars, x_set_horizontal_scroll_bars)
 +      (x_set_scroll_bar_width, x_set_scroll_bar_height):
 +      Update callers.
 +      (frame-inhibit-implied-resize): Rewrite doc-string.
 +      * frame.h (frame_inhibit_resize, adjust_frame_size):
 +      Fix external declarations.
 +      (Qframe_position, Qframe_outer_size)
 +      (Qframe_inner_size, Qexternal_border_size, Qtitle_height)
 +      (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external)
 +      (Qtool_bar_size): Extern them.
 +      * gtkutil.c (FRAME_TOTAL_PIXEL_HEIGHT, FRAME_TOTAL_PIXEL_WIDTH)
 +      (xg_height_or_width_changed): Remove.
 +      (xg_frame_set_char_size): Adjust adjust_frame_size calls.
 +      (menubar_map_cb, xg_update_frame_menubar, free_frame_menubar)
 +      (tb_size_cb, update_frame_tool_bar, free_frame_tool_bar)
 +      (xg_change_toolbar_position): Call adjust_frame_size directly.
 +      * nsfns.m (x_set_internal_border_width, Fx_create_frame):
 +      Fix calls of adjust_frame_size.
 +      * w32fns.c (x_set_internal_border_width, x_set_menu_bar_lines)
 +      (Fx_create_frame, x_create_tip_frame): Adjust adjust_frame_size calls.
 +      (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that
 +      frame can get resized when tool-bar-lines parameter changes from
 +      or to zero.
 +      (Fw32_frame_menu_bar_size): Return fourth value.
 +      (Fw32_frame_rect): Block input around system calls
 +      (Fx_frame_geometry): New function.
 +      * w32menu.c (set_frame_menubar): Adjust adjust_frame_size call.
 +      * w32term.c (x_new_font): Adjust adjust_frame_size call.
 +      * widget.c (EmacsFrameSetCharSize): Adjust frame_inhibit_resize call.
 +      * window.c (Fset_window_configuration): Adjust adjust_frame_size call.
 +      * xfns.c (x_set_menu_bar_lines, x_set_internal_border_width)
 +      (Fx_create_frame): Adjust adjust_frame_size calls.
 +      (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that
 +      frame can get resized when tool-bar-lines parameter changes from
 +      or to zero.
 +      (Fx_frame_geometry): New function.
 +      * xmenu.c (update_frame_menubar): On Lucid call
 +      adjust_frame_size with one pixel less height to avoid that
 +      repeatedly adding/removing the menu bar grows the frame.
 +      (free_frame_menubar): On Motif arrange to optionally preserve
 +      the old frame height when removing the menu bar.
 +      * xterm.c (x_new_font): Adjust adjust_frame_size call.
 +
  2014-11-03  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (Fdump_glyph_matrix, Fdump_frame_glyph_matrix): Doc fix.
  
        * nsfns.m (ns_set_doc_edited): Check for FRAME_NS (Bug#18925).
  
 -2014-10-31  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-11-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsimage.m (allocInitFromFile:): Initialize bmRep.
 +      (dealloc): Release bmRep.
 +
 +      * nsterm.h (EmacsImage): Remove imageListNext, refCount, reference,
 +      imageListSetNext, imageListNext.
 +
 +      * nsimage.m (ImageList, imageListNext, imageListSetNext:)
 +      (reference): Remove.
 +      (allocInitFromFile:): Remove searching ImageList and calling
 +      reference (Bug#18918).
 +      (dealloc): Remove handling if ImageList.
 +
 +2014-11-02  Andreas Schwab  <schwab@linux-m68k.org>
  
 -      * macfont.m (macfont_glyph_extents): Turn off syntetic bold
 +      * process.c (catch_child_signal): Fix incorrect assertion.
 +
 +2014-11-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * macfont.m (macfont_draw):
 +      * nsterm.m (ns_mouse_position, judge): Clean up merge conflict.
 +
 +      * macfont.m (macfont_glyph_extents): Turn off synthetic bold
        if force_integral_p (i.e. no antialias).
 -      (macfont_draw): Check ns_antialias_text, also turn off syntetic
 +      (macfont_draw): Check ns_antialias_text, also turn off synthetic
        bold if no antialias (Bug#18876).
  
        * emacs.c (main): Don't chdir to $HOME on Cocoa if --chdir
        was given (Bug#18846).
  
 -2014-10-30  Jan Djärv  <jan.h.d@swipnet.se>
 -
        * nsterm.h (ns_set_doc_edited): Declare taking no args.
  
        * nsfns.m (ns_set_doc_edited): Do all logic (check frames) here
        (getMouseMotionPart:window:x:y:): Remove, unused.
        (sendScrollEventAtLoc:fromEvent:): Make Lisp_Object win from window.
  
 -2014-10-30  Samuel Bronson  <naesten@gmail.com>
 +2014-11-01  Eli Zaretskii  <eliz@gnu.org>
  
 -      * unexmacosx.c (copy_data_segment): Port to GCC 4.6+ (Bug#9927).
 +      * keyboard.c (readable_events): When FLAGS include
 +      READABLE_EVENTS_FILTER_EVENTS, ignore BUFFER_SWITCH_EVENT events.
 +      This avoids returning non-nil from input-pending-p when only such
 +      events are in the queue.  (Bug#18856)
 +
 +2014-11-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsselect.m (QCLIPBOARD, QSECONDARY, QTEXT, QFILE_NAME)
 +      (NXPrimaryPboard, NXSecondaryPboard): Declare static.
 +      (Qforeign_selection): Remove.
 +      (ns_get_local_selection): Identation fix.
 +      (syms_of_nsselect): Remove Qforeign_selection, ns-lost-selection-hooks
 +
 +      * nsselect.m (ns_get_local_selection): Remove calling of
 +      functions in Vselection_converter_alist (Bug#18911).
 +      (syms_of_nsselect): Remove Vselection_converter_alist.
  
 -2014-10-28  Eli Zaretskii  <eliz@gnu.org>
 +2014-10-31  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * font.c (copy_font_spec): Redesign to avoid Fcopy_alist
 +      and unnecessary initialization.  Adjust comments.
 +
 +2014-10-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_cache_reset_to): Invalidate bidi_cache_last_idx by
 +      setting it to -1.
 +      (bidi_find_bracket_pairs): Pass to bidi_cache_reset_to a relative
 +      index, not an absolute one, as that's what the function expects.
 +
 +2014-10-30  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xfaces.c (Finternal_set_lisp_face_attribute): Don't try to realize
 +      font on an initial frame when running as a daemon (Bug#18869).
 +
 +      * fontset.c (toplevel): Adjust comment to match 2014-06-19 change.
 +
 +2014-10-30  Eli Zaretskii  <eliz@gnu.org>
  
        * fileio.c (Fexpand_file_name): Use make_unibyte_string, not
        build_string, when importing a home directory.  (Bug#18873)
  
 -2014-10-26  Eli Zaretskii  <eliz@gnu.org>
 +2014-12-27  Eli Zaretskii  <eliz@gnu.org>
  
        * dispnew.c (buffer_posn_from_coords):
        Use WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to
        account for the header-line height.  (Bug#18839)
  
 -2014-10-22  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +2014-10-28  Ulf Jasper  <ulf.jasper@web.de>
  
 -      * xdisp.c (draw_glyphs): Set clipping to highlight boundaries.
 -      [Backport]
 -      (erase_phys_cursor): Fix confusion between window-relative and
 -      text area-relative x-coordinates.  [Backport]
 +      * xml.c (parse_region): Do not forget the first document child.
  
 -2014-10-20  Glenn Morris  <rgm@gnu.org>
 +2014-10-25  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * minibuf.c (history-length): Increase default from 30 to 100.
 -      [Backport]
 +      * nsselect.m: pasteboard_changecount is new.
 +      (ns_store_pb_change_count, ns_get_pb_change_count)
 +      (ns_get_our_change_count_for): New functions.
 +      (ns_string_to_pasteboard_internal): Correct comment.
 +      type => gtype in eassert, Call ns_store_pb_change_count.
 +      (Fns_own_selection_internal): Remove data, use value (Bug#18799).
 +      (Fns_disown_selection_internal, Fns_selection_owner_p):
 +      Replace Vselection_alist check, with change count check.
 +      (Fns_get_selection): Initialize val to Qnil.  Only get local
 +      selection if change counts match (Bug#18799).
 +      (nxatoms_of_nsselect): Initialize pasteboard_changecount.
 +
 +2014-10-25  Noam Postavsky  <npostavs@users.sourceforget.net>
 +
 +      * w32proc.c (create_child): If calling a quoted batch file,
 +      pass NULL for exe.  (Bug#18745)
 +
 +2014-10-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_resolve_explicit, bidi_find_bracket_pairs)
 +      (bidi_resolve_brackets): Use end of string position rather than ZV
 +      when iterating over a string.  (Bug#18815)
 +
 +2014-10-24  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * keyboard.c (make_lispy_position): Return coordinates also when
 +      on scroll bars, fringes, margins or not in a window.
 +      * xdisp.c (show_mouse_face): Don't change cursor face during
 +      mouse tracking.
  
 -2014-10-20  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-10-23  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (Fset_frame_height, Fset_frame_width, Fset_frame_size)
 +      (frame_resize_pixelwise, frame_inhibit_implied_resize):
 +      Fix doc-strings (Bug#18789).
 +
 +2014-10-23  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * Makefile.in (ACLOCAL_INPUTS): Omit unnecessary use of 'wildcard'.
 +
 +2014-10-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Optimize redisplay of simple bracketed text.
 +      * bidi.c (bidi_cache_reset_to): New function.
 +      (bidi_cache_reset): Call it.
 +      (bidi_init_it, bidi_line_init): Initialize the bracket_pairing_pos
 +      member to -1.
 +      (bidi_resolve_explicit): Reset bracket_pairing_pos and
 +      bracket_enclosed_type only if bracket_pairing_pos's value is not
 +      ZV.
 +      (MAX_BPA_STACK): Make sure the value is signed.
 +      (PUSH_BPA_STACK): If the BPA stack overflows, don't bail out, but
 +      stop pushing values onto the stack.
 +      (bidi_find_bracket_pairs): If the bracketed text is only on the
 +      base embedding level, remove all the states cached by this
 +      function from the cache, and return zero, so that the brackets in
 +      this segment of text are processed as normal neutrals.
 +      (bidi_resolve_brackets): Detect the brackets that are to be
 +      processed as neutrals, and don't call bidi_find_bracket_pairs on
 +      them.  (Bug#18778)
 +
 +2014-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * w32select.c (Fw32_selection_exists_p): Rename from
 +      Fx_selection_exists_p.
 +      (syms_of_w32select): Adjust accordingly.
 +
 +      * w16select.c (Fw16_selection_exists_p): Rename from
 +      Fx_selection_exists_p.
 +      (syms_of_win16select): Adjust accordingly.
 +
 +      * nsselect.m (ns_get_local_selection): Signal error rather than `quit'.
 +      (Fns_own_selection_internal): Tighten scoping.
 +      (Fns_selection_exists_p): Rename from Fx_selection_exists_p.
 +      (Fns_get_selection): Rename from Fx_get_selection_internal.
 +      (Fns_get_selection_internal, Fns_store_selection_internal):
 +      Remove functions.
 +      (syms_of_nsselect): Adjust accordingly.
 +
 +2014-10-21  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32fns.c (Fw32_frame_menu_bar_size): New function.
 +      * w32term.c (x_set_window_size): Account for wrapped menu bar
 +      lines when setting up frame height (Bug#15174 and Bug#18720).
 +      (w32_add_wrapped_menu_bar_lines): New variable.
 +
 +2014-10-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * xdisp.c (redisplay_window): Re-run pre-redisplay-function after we
        move point.
  
  2014-10-20  Glenn Morris  <rgm@gnu.org>
  
 -      * Version 24.4 released.
 +      * Merge in all changes up to 24.4 release.
 +
 +2014-10-19  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (xg_update_menubar, xg_update_menu_item): Only call
 +      g_object_notify for label if Gtk+ >= 2.16 (Bug#16522).
 +
 +      * xterm.h (x_output): Remove net_wm_state_hidden_seen.
 +
 +      * xterm.c (handle_one_xevent): Check return value from
 +      x_handle_net_wm_state, remove net_wm_state_hidden_seen (Bug#18722).
 +      (get_current_wm_state): Remove net_wm_state_hidden_seen setting.
 +
 +      * gtkutil.c (create_dialog): Don't use gtk_dialog_get_action_area on
 +      Gt+ >= 3.12, or gtk_misc_set_alignment on Gtk+ >= 3.14 (Bug#18674).
 +      (make_widget_for_menu_item): Don't use gtk_misc_set_alignment on
 +      Gtk+ >= 3.14 (Bug#18674).
 +      (update_frame_tool_bar): Don't use  gtk_misc_set_padding on
 +      Gtk+ >= 3.14 (Bug#18674).
 +
 +2014-10-18  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * gtkutil.c: Remove no-longer-used code.
 +      (xg_update_menubar): Remove unused local and unnecessary call to
 +      gtk_menu_item_get_submenu.
 +      (XG_TOOL_BAR_PROXY_BUTTON, xg_tool_bar_proxy_callback)
 +      (xg_get_tool_bar_widgets, xg_tool_bar_proxy_help_callback)
 +      (TOOLBAR_TOP_WIDGET): Remove; no longer used.
 +
 +2014-10-18  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xfns.c (syms_of_xfns): Remove x-gtk-whole-detached-tool-bar.
 +
 +      * xterm.h (handlebox_widget): Remove.
 +
 +      * xmenu.c (set_frame_menubar): Remove GTK block that calls
 +      xg_have_tear_offs.
 +
 +      * gtkutil.h (xg_have_tear_offs): Remove declaration.
 +
 +      * gtkutil.c (XG_TEXT_CANCEL, XG_TEXT_OPEN, XG_TEXT_OK): New defines
 +      to handle Gtk versions.
 +      (xg_get_file_with_chooser): Use them.
 +      (xg_have_tear_offs, tearoff_remove, tearoff_activate):
 +      Remove (create_menus): Remove teroff argument and code.
 +      Remove call to gtk_menu_set_title.
 +      (xg_update_menubar, xg_update_submenu): Remove tearoff code.
 +      Adjust args to create_menus.
 +      (xg_tool_bar_menu_proxy, xg_tool_bar_detach_callback)
 +      (xg_tool_bar_attach_callback, TOOLBAR_TOP_WIDGET): Remove.
 +      (xg_pack_tool_bar): Replace TOOLBAR_TOP_WIDGET, remove detach code.
 +      (xg_make_tool_item): Remove detach code.
 +      (xg_update_tool_bar_sizes): Replace TOOLBAR_TOP_WIDGET.
 +      (find_icon_from_name): New function.
 +      (update_frame_tool_bar): Remove GtkStockItem code, move to
 +      find_icon_from_name.  Let stock be a list of icon names to try.
 +      Only use gtk_image_new_from_stock on Gtk+ < 3.10.
 +      Replace TOOLBAR_TOP_WIDGET.
 +      (free_frame_tool_bar, xg_change_toolbar_position ):
 +      Replace TOOLBAR_TOP_WIDGET.
 +      (xg_initialize): Remove tearoff code.
 +
 +2014-10-18  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xterm.c (x_draw_bar_cursor, x_draw_hollow_cursor): Subtract 1
 +      pixel from the window's cursor glyph width, since X renders hollow
 +      blocks 1 pixel wider than the 'width' parameter.
 +
 +      * xdisp.c (get_phys_cursor_geometry): Don't subtract 1 pixel from
 +      glyph->pixel_width; this is now done in xterm.c.
 +
 +      Fix reordering of bracket characters in isolates.
 +      * bidi.c (bidi_cache_find): Rename the argument NEUTRALS_OK to
 +      RESOLVED_ONLY; when non-zero, return from the cache only fully
 +      resolved states.  All callers changed.
 +      (CANONICAL_EQU): New macro.
 +      (PUSH_BPA_STACK): Use it to push onto the BPA stack the canonical
 +      equivalent of the paired closing bracket character.
 +      (bidi_find_bracket_pairs): Set the bracket_pairing_pos member to
 +      the default non-negative value, to be checked later in
 +      bidi_resolve_brackets.  Use CANONICAL_EQU to test candidate
 +      characters against those pushed onto the BPA stack.
 +      (bidi_record_type_for_neutral): New function.
 +      (bidi_resolve_brackets): Record next_for_neutral and
 +      prev_for_neutral when embedding level gets pushed.  Force
 +      resolution of bracket pairs when entering a level run that was not
 +      yet BPA-resolved.
 +      (bidi_resolve_neutral): Add assertions before calling
 +      bidi_resolve_neutral_1.
 +      (bidi_level_of_next_char): Remove the code that attempted to
 +      resolve unresolved neutrals; that is now done by
 +      bidi_resolve_neutral.
 +
 +      * w32select.c (owner_callback): Mark with ALIGN_STACK attribute.
  
  2014-10-17  Eli Zaretskii  <eliz@gnu.org>
  
        Reported by Dmitry Antipov <dmantipov@yandex.ru>, see
        http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00518.html.
  
 -2014-10-10  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-10-16  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * bidi.c (bidi_find_bracket_pairs): Avoid a loop that does nothing
 +      useful.
 +
 +2014-10-15  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * bidi.c (bidi_find_bracket_pairs): Initialize local var.
 +      This pacifies GCC 4.9.1 with --enable-gcc-warnings.
 +      It's not clear to me whether the initialization is needed,
 +      but it can't hurt so I played it safe.
 +
 +2014-10-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lisp.mk (lisp): Add emacs-lisp/eldoc.elc.
 +
 +2014-10-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Update the bidirectional reordering engine for Unicode 6.3 and 7.0.
 +      * bidi.c (bidi_ignore_explicit_marks_for_paragraph_level):
 +      Remove variable.
 +      (bidi_get_type): Return the isolate initiators and terminator types.
 +      (bidi_isolate_fmt_char, bidi_paired_bracket_type)
 +      (bidi_fetch_char_skip_isolates, find_first_strong_char)
 +      (bidi_find_bracket_pairs, bidi_resolve_brackets): New functions.
 +      (bidi_set_sos_type): Rename from bidi_set_sor_type and updated
 +      for the new features.
 +      (bidi_push_embedding_level, bidi_pop_embedding_level): Update to
 +      push and pop correctly for isolates.
 +      (bidi_remember_char): Modify to accept an additional argument
 +      and record the bidi type according to its value.
 +      (bidi_cache_iterator_state): Accept an additional argument to only
 +      update an existing state.  Handle the new members of struct bidi_it.
 +      (bidi_cache_find): Arguments changed: no longer accepts a level,
 +      instead accepts a flag telling it whether it is okay to return
 +      unresolved neutrals.
 +      (bidi_initialize): Initiate and staticpro the bracket-type uniprop
 +      table.  Initialize new isolate-related members.
 +      (bidi_paragraph_init): Some code factored out into
 +      find_first_strong_char.
 +      (bidi_resolve_explicit_1): Function deleted, its code incorporated
 +      into bidi_resolve_explicit.
 +      (bidi_resolve_explicit): Support the isolate initiators and
 +      terminator.  Fix handling of embeddings and overrides according to
 +      new UBA requirements.  Record information about previously seen
 +      characters here (moved from bidi_level_of_next_char).
 +      (bidi_resolve_weak): Adapt to changes in struct members.
 +      (FLAG_EMBEDDING_INSIDE, FLAG_OPPOSITE_INSIDE, MAX_BPA_STACK)
 +      (STORE_BRACKET_CHARPOS, PUSH_BPA_STACK): New macros.
 +      (bidi_resolve_neutral): Call bidi_resolve_brackets to handle the
 +      paired bracket resolution.  Handle isolate initiators and
 +      terminator.
 +      (bidi_type_of_next_char): Remove unneeded code for BN limit.
 +      (bidi_level_of_next_char): Move the code that records information
 +      about previous characters to bidi_resolve_explicit.  Fix logic of
 +      resolving neutrals and make sure their cache entries are updated.
 +      Remove now unneeded special handling of PDF level.
 +
 +      * dispextern.h (struct glyph): Enlarge the width of resolved_level.
 +      (BIDI_MAXDEPTH): New macro, renamed from BIDI_MAXLEVEL and
 +      enlarged per Unicode 6.3.
 +      (enum bidi_bracket_type_t): New data type.
 +      (struct bidi_saved_info): Leave only 2 type members out of 4.
 +      Remove bytepos.
 +      (struct bidi_stack): Add members necessary to support isolating
 +      sequences.
 +      (struct bidi_it): Add new members necessary to support isolating
 +      sequences and bracket pair resolution.
 +
 +      * xdisp.c (Fbidi_resolved_levels): New function.
 +      (syms_of_xdisp): Defsubr it.
 +      (append_glyph, append_composite_glyph, produce_image_glyph)
 +      (append_stretch_glyph, append_glyphless_glyph): Convert aborts to
 +      assertions.
 +      (syms_of_xdisp) <inhibit-bidi-mirroring>: New variable.
 +
 +      * term.c (append_glyph, append_composite_glyph)
 +      (append_glyphless_glyph): Convert aborts to assertions.
 +
 +      * .gdbinit (pgx): Display the character codepoint, resolved level,
 +      and bidi type also for glyphless glyphs.
 +
 +2014-10-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid unwanted point motion in Fline_beginning_position.
 +      * lisp.h (scan_newline_from_point): Add prototype.
 +      * search.c (scan_newline_from_point): New function, refactored from...
 +      * cmds.c (Fforward_line): ...adjusted user.
 +      * editfns.c (Fline_beginning_position): Use scan_newline_from_point
 +      and simplify the former since the latter doesn't move point.
 +
 +2014-10-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Cleanup terminal handling code.
 +      * dispextern.h (get_named_tty): Remove prototype but...
 +      * termhooks.h (get_named_terminal): ...resurrect it under
 +      more meaningful name.
 +      (get_terminal): Likewise, but with...
 +      (decode_live_terminal): ...this name.
 +      (decode_tty_terminal): Add prototype.
 +      * term.c (get_tty_terminal): Remove.
 +      (get_named_tty): Remove.
 +      (Ftty_display_color_p, Ftty_display_color_cells, Ftty_type)
 +      (Fcontrolling_tty_p, Fsuspend_tty, Fresume_tty):
 +      Use decode_tty_terminal.
 +      (Ftty_no_underline, Ftty_top_frame): Use decode_live_terminal.
 +      * terminal.c (get_terminal): Refactor to...
 +      (decode_terminal, decode_live_terminal): ...new functions.
 +      (decode_tty_terminal): Replacement for get_tty_terminal.
 +      (get_named_terminal): Likewise for get_named_tty.
 +      * coding.c (Fset_terminal_coding_system_internal)
 +      (Fterminal_coding_system, Fset_keyboard_coding_system_internal):
 +      (Fkeyboard_coding_system):
 +      * composite.c (Fcomposition_get_gstring):
 +      * dispnew.c (Fsend_string_to_terminal):
 +      * frame.c (Fmake_terminal_frame):
 +      * nsfns.m (check_ns_display_info):
 +      * w32fns.c, xfns.c (check_x_display_info):
 +      * xselect.c (frame_for_x_selection): Use decode_live_terminal.
 +      * keyboard.c (handle_interrupt_signal, handle_interrupt)
 +      (Fset_quit_char): Use get_named_terminal.
 +      (Fset_output_flow_control, Fset_input_meta_mode):
 +      Use decode_tty_terminal.
 +
 +2014-10-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.h (ALIGN_STACK): Use _WIN64, not _W64, to distinguish
 +      between 32-bit and 64-bit MinGW builds.  (Bug#18699)
 +
 +2014-10-12  Paul Eggert  <eggert@cs.ucla.edu>
  
        Fix port to Debian GNU/kFreeBSD 7 (wheezy) (Bug#18666).
        * process.c (accept4) [!HAVE_ACCEPT4]: New macro.
  
 -2014-10-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-10-12  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * frame.c (Fmouse_pixel_position): Call Vmouse_position_function
        (bug#18638).
  
 -2014-10-08  K. Handa  <handa@gnu.org>
 +2014-10-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * editfns.c (dump_tz_string): No longer const.
 +      It might be modified.
 +
 +      * nsmenu.m (clear): Assume OS X 10.6 or later.
 +
 +2014-10-12  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * unexmacosx.c: Remove include ppc/reloc.h.
 +      (unrelocate, copy_dysymtab): Remove PPC code.
 +      (rebase_reloc_address): Remove, only used for PPC:
 +
 +      * nsterm.m: Always include macfont.h on COCOA.
 +      (ns_update_auto_hide_menu_bar, ns_draw_fringe_bitmap)
 +      (ns_dumpglyphs_image, ns_check_menu_open)
 +      (applicationDidFinishLaunching)
 +      (antialiasThresholdDidChange:)
 +      (keyDown:, toggleFullScreen:, setPosition:portion:whole:):
 +      Remove checks for OSX <= 10.5/10.6.
 +      (changeFont:): Use macfont on COCOA, nsfont on GNUSTEP.
 +      (syms_of_nsterm): Call syms_of_macfont on COCOA, syms_of_nsfont on
 +      GNUSTEP.
 +
 +      * nsterm.h (MAC_OS_X_VERSION_10_4, MAC_OS_X_VERSION_10_5): Remove.
 +      (NS_HAVE_NSINTEGER): Remove block.
 +      Remove >= OSX 10.6 tests.
 +
 +      * nsmenu.m (NSMenuDidBeginTrackingNotification): Remove.
 +      (x_activate_menubar, trackingNotification:): Remove check for
 +      OSX >= 10.5.
 +      (menuNeedsUpdate:): Remove check for OSX < 10.5.
 +
 +      * nsimage.m (allocInitFromFile:): Remove code for OSX < 10.6.
 +
 +      * nsfns.m: Always include macfont.h on COCOA.
 +      (ns_filename_from_panel, ns_directory_from_panel)
 +      (Fx_create_frame, Fns_popup_font_panel, ns_run_file_dialog)
 +      (Fns_read_file_name, Fns_list_services): Remove code for OSX < 10.6
 +
 +      * macfont.m: Remove >= 1050 check.
 +      (macfont_create_family_with_symbol)
 +      (macfont_get_glyph_for_character)
 +      (mac_font_get_glyphs_for_variants)
 +      (mac_ctfont_create_available_families, syms_of_macfont):
 +      Remove code for OSX < 10.6.
 +      (mac_font_family_group, mac_font_family_compare): Remove, only used
 +      for OSX < 10.6.
 +
 +      * macfont.h (MAC_FONT_FORMAT_ATTRIBUTE, MAC_FONT_FORMAT_BITMAP)
 +      (mac_font_copy_non_synthetic_table): Remove versions for OSX < 10.6
 +
 +      * Makefile.in: Replace nsfont.o macfont.o with ns_fontfile in
 +      comment.
 +
 +2014-10-12  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix putenv race conditions with undefined behavior (Bug#8705).
 +      Do all putenv calls before Emacs creates any threads.
 +      Use a safer way to modify the TZ environment variable in the
 +      presence of multiple threads.  For further thread-safety,
 +      prefer localtime_r and gmtime_r to localtime and gmtime,
 +      and prefer struct tm's tm_gmtoff (if available) to calling
 +      both localtime_r and gmtime_r.
 +      * dbusbind.c (Fdbus__init_bus): Move xputenv call from here ...
 +      (init_dbusbind): ... to this new function.
 +      * emacs.c (main) [HAVE_DBUS]: Call it before creating threads.
 +      * xterm.c (x_term_init): Move xputenv call from here ...
 +      (init_xterm): ... to this new function.
 +      * emacs.c (main) [USE_GTK]: Call it before creating threads.
 +      * editfns.c (HAVE_TM_GMTOFF): Default to false.
 +      (dump_tz_string): New constant.
 +      (init_editfns): Use it.  This centralizes the dump_tz stuff.
 +      Call set_time_zone_rule here, so that its xputenv is done
 +      before Emacs goes multithreaded.
 +      (mktime_z) [!HAVE_TZALLOC]: New function, which is typically
 +      thread-safe enough for Emacs.
 +      (format_time_string, Fdecode_time, Fcurrent_time_string)
 +      (Fcurrent_time_zone):
 +      Prefer localtime_r and gmtime_r, which are more thread-safe, to
 +      localtime and gmtime.  Remove now-unnecessary calls to block_input.
 +      (tm_gmtoff): New static function.
 +      (Fdecode_time, Fcurrent_time_zone): Use it.
 +      (Fencode_time): Use mktime_z, for better thread-safety.
 +      (set_time_zone_rule): Now static.  Rewrite to be mostly thread-safe,
 +      i.e., not quite thread-safe but good enough for Emacs typical usage.
 +      Do not reclaim storage that is in the environment; let it leak.
 +      Always call tzset, since localtime_r does not.
 +      * emacs.c (dump_tz, Fdump_emacs) [HAVE_TZSET]: Remove dump_tz stuff.
 +      This is now done in init_editfns.
 +      * systime.h (mktime_z, timezone_t, tzalloc, tzfree) [!HAVE_TZALLOC]:
 +      New macros and declarations, for platforms lacking tzalloc & friends.
 +
 +2014-10-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * lisp.h (USE_STACK_STRING): Now true only if USE_STACK CONS.
 +      On x86 platforms this works around GCC bug 63495
 +      <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63495>,
 +      and more generally should fix a portability problem in Emacs.
 +      Reported by Stefan Monnier in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00261.html
 +
 +2014-10-08  Leo Liu  <sdl.web@gmail.com>
 +
 +      Enhance terpri to allow conditionally output a newline.  (Bug#18652)
 +      * keymap.c (describe_vector_princ):
 +      * keyboard.c (Fcommand_error_default_function): Adapt to change to
 +      Fterpri.
 +
 +      * print.c (printchar_stdout_last): Declare.
 +      (printchar): Record the last char written to stdout.
 +      (Fterpri): Add optional argument ENSURE.
 +
 +2014-10-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32inevt.c (maybe_generate_resize_event): Pass non-zero as the
 +      DELAY argument to change_frame_size, so that the frame size
 +      changes, if any are needed, are delayed until the next redisplay.
 +      This is to avoid a too early QUIT inside change_frame_size, when
 +      it calls Lisp in frame_windows_min_size, in case one of the events
 +      we've read sets the quit-flag.  (Bug#18649)
 +
 +      * w32fns.c (check_x_display_info): Accept terminal objects as
 +      argument, to follow what xfns.c does.
 +
 +2014-10-07  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in ($(srcdir)/macuvs.h)
 +      ($(lispsource)/international/charprop.el): Add explicit FORCE.
 +
 +2014-10-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * decompress.c (init_zlib_functions): Move the message about zlib
 +      being unavailable from here...
 +      (Fzlib_decompress_region): ...to here.  (Bug#18650)
 +
 +2014-10-07  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * font.c (Ffont_get_glyphs): Use validate_subarray and fix
 +      the case where an optional string is used.  Adjust docstring.
 +
 +2014-10-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lisp.mk (lisp): Remove w32-common-fns.elc.
 +
 +2014-10-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * keyboard.c (Qleft, Qright): Remove duplicate definitions (Bug#9927).
 +      These were already defined in buffer.c, and the duplicate
 +      definitions cause problems on platforms like 'gcc -fno-common'.
 +      Reported by Peter Dyballa in: http://bugs.gnu.org/9927#137
 +
 +2014-10-05  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (updateFrameSize:): Only call update_frame_tool_bar
 +      if toolbar is visible.
 +
 +      * nsfont.m (nsfont_draw): Use CGFloat for GNUstep newer than
 +      0.23 (Bug#18030).
 +
 +      * nsterm.m (syms_of_nsterm): ns-use-fullscreen-animation is new.
 +      (toggleFullScreen:): Use ns-use-fullscreen-animation for animate.
 +      (ns_select, ns_read_socket): Use unwind_protect to decrease
 +      apploopnr (Bug#18345).
 +      (ns_draw_window_cursor): Adjust y for hbar cursor only if smaller than
 +      line height (Bug#17977).
 +
 +      * macfont.m: Fix indentation and import changes from macport 24.3.94.
 +      (macfont_closest_traits_index): New function.
 +      (macfont_closest_traits_index_p): Rename from
 +      macfont_closest_traits_index.
 +      (macfont_list): Use macfont_closest_traits_index_p.
 +
 +2014-10-05  K. Handa  <handa@gnu.org>
  
        * coding.c (detect_coding_iso_2022): Set coding->rejected
        correctly when an invalid escape sequence is found (Bug#18610).
  
 -2014-10-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-10-04  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * font.c (font_list_entities): Do not add empty vector to font cache.
 -      (font_matching_entity): Likewise.  If matching entity is found, insert
 -      1-item vector with this entity instead of an entity itself (Bug#17125).
 +      * gtkutil.c (create_menus): Only add tearoffs to empty menus.
 +      (xg_update_submenu): Remove has_tearoff_p, pass 1 to create_menus
 +      for add_tearoff_p.
  
 -2014-10-02  Eli Zaretskii  <eliz@gnu.org>
 +2014-10-04  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * buffer.c (scroll_bar_width, scroll_bar_height):
 +      Fix doc-strings.
 +      * window.c (Fset_window_scroll_bars): Fix doc-string.
 +      (Fwindow_scroll_bars): Have it return what the doc-string says.
 +
 +2014-10-03  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (move_it_by_lines): Call reseat_1 after moving the
        iterator backwards, to resync the bidi iterator.  (Bug#18584)
  
 -2014-10-01  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-10-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Consistently use min and max macros from lisp.h.
 +      * coding.c (min, max):
 +      * font.c (MAX):
 +      * unexhp9k800.c (min):
 +      * unexw32.c (min, max): Use definitions from lisp.h.
 +      * regex.c (MAX, MIN) [!emacs]: Define own max and min as such.
 +      Adjust users.
 +      * gmalloc.c (min): Tiny style change.
 +
 +      * fileio.c (emacs_readlinkat, Finsert_file_contents):
 +      * w32fns.c, xfns.c (x_create_tip_frame): Use AUTO_STRING.
 +
 +2014-10-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix x-focus-frame bug with "Not an in-range integer" (Bug#18586).
 +      * xselect.c (X_SHRT_MAX, X_SHRT_MIN, X_LONG_MAX, X_LONG_MIN)
 +      (X_ULONG_MAX): Move these macros to xterm.h.
 +      (x_fill_property_data): Be more generous about allowing either
 +      signed or unsigned data of the appropriate width.
 +      * xterm.h (x_display_set_last_user_time): New function.
 +      All setters of last_user_time changd to use this function.
 +      If ENABLE_CHECKING, check that the times are in range.
 +
 +2014-10-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (adjust_decode_mode_spec_buffer): Use 'int' instead of
 +      'ssize_t'.  Suggested by Paul Eggert <eggert@cs.ucla.edu>.
 +
 +2014-10-02  Jan Djärv  <jan.h.d@swipnet.se>
  
        * xfaces.c (Finternal_set_lisp_face_attribute): Don't try to
        make a font_object from a tty frame (Bug#18573).
        (Finternal_set_lisp_face_attribute): Add FIXME comment.
  
 +2014-10-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * alloc.c (mark_overlay): Assume that overlay boundaries are
 +      always markers.  Add comment.
 +      * lread.c (read_internal_start): Use convenient validate_subarray.
 +      Adjust docstring.
 +      (Fread_from_string): Adjust docstring.
 +
 +2014-10-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * lisp.h: Fix up compilation for USE_STACK_LISP_OBJECTS=false.
 +
 +      * nsselect.m (ns-own-selection-internal, ns-disown-selection-internal):
 +      Rename from the "x-" prefix.
 +
 +2014-10-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * xselect.c (selection-converter-alist): Fix docstring.
 +
 +2014-10-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32proc.c (sys_spawnve): Avoid modification of the CMDNAME
 +      argument passed by the caller, when we mirror all slashes into
 +      backslashes.
 +
 +2014-10-01  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * gtkutil.c (xg_set_toolkit_horizontal_scroll_bar_thumb):
 +      Resurrect old code and fix compilation with GTK < 2.13.6.
 +
 +2014-10-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use AUTO_CONS instead of SCOPED_CONS, etc.
 +      * frame.h (AUTO_FRAME_ARG): Rename from FRAME_PARAMETER.
 +      * lisp.h (AUTO_CONS): Rename from scoped_cons.
 +      (AUTO_LIST1): Rename from scoped_list1.
 +      (AUTO_LIST2): Rename from scoped_list2.
 +      (AUTO_LIST3): Rename from scoped_list3.
 +      (AUTO_LIST4): Rename from scoped_list4.
 +      (AUTO_STRING): Rename from SCOPED_STRING.
 +      * frame.h (AUTO_FRAME_ARG):
 +      * lisp.h (AUTO_CONS, AUTO_LIST1, AUTO_LIST2, AUTO_LIST3)
 +      (AUTO_LIST4, AUTO_STRING):
 +      Prepend a new argument 'name'.
 +      Declare a variable instead of yielding a value.
 +      All uses changed.
 +      * lisp.h (STACK_CONS, AUTO_CONS_EXPR): New internal macros.
 +
  2014-09-30  Eli Zaretskii  <eliz@gnu.org>
  
        * w32fns.c (w32_createwindow): Accept an additional argument, an
        array of 2 values specifying the coordinates of the frame's
        top-left corner.  Use these values instead of calling x_get_arg,
        which can cons Lisp objects, and therefore cannot be called except
 -      from the main thread.  Remove redundant tests for the default values.
 +      from the main thread.  Remove redundant tests for the default
 +      values.
        (my_create_window): Move the calculation of the coordinates of the
        frame's top-left edge here.  Pass them to the input thread via the
        second parameter of the WM_EMACS_CREATEWINDOW message.
        See http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00892.html
        for the details.
  
 -2014-09-29  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-30  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (cursor_row_fully_visible_p): Update commentary.
        (redisplay_window): Treat the frame's frozen_window_starts flag
  
        * window.c (Frecenter): Set the window's redisplay flag.
  
 -2014-09-24  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-30  Eli Zaretskii  <eliz@gnu.org>
  
        * w32term.c (w32_read_socket): Don't use frame dimensions for
        resizing if GetClientRect returned an empty (0, 0, 0, 0)
        (adjust_decode_mode_spec_buffer): Add assertion to avoid passing
        negative values to xrealloc.  (Bug#18528)
  
 +2014-09-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * alloc.c: Remove now-unnecessary check.
 +      Suggested by Dmitry Antipov in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00891.html
 +
 +      * xterm.c (x_term_init): Allocate temps on stack, not on heap.
 +
 +      * frame.c (x_set_frame_parameters): Port --enable-gcc-warnings
 +      to Ubuntu 14.04.1 x86-64.
 +
 +      Simplify stack-allocated Lisp objects, and make them more portable.
 +      The build_local_string macro was used in two ways: (1) string
 +      literals for which scoped allocation suffices, and (2) file name
 +      components, where it's not safe in general to assume bounded-size
 +      ASCII data.  Simplify by defining a new macro SCOPED_STRING that
 +      allocates a block-scope string, and by using SCOPED_STRING for (1)
 +      and build_string for (2).  Furthermore, actually use stack
 +      allocation only for objects known to have sufficient alignment.
 +      This simpler implementation means Emacs can make
 +      USE_STACK_LISP_OBJECTS the default unless GC_MARK_STACK !=
 +      GC_MAKE_GCPROS_NOOPS.
 +      * lisp.h (GCALIGNED): Align even if !USE_STACK_LISP_OBJECTS,
 +      for fewer differences among implementations.
 +      (struct Lisp_String): Now GCALIGNED.
 +      (USE_STACK_LISP_OBJECTS): Default to true, since the
 +      implementation no longer insists on a nonempty GCALIGNED.
 +      But make it false if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS.
 +      (SCOPED_CONS_INITIALIZER): Remove, since it's no longer needed
 +      separately.  Move definiens to scoped_cons.  The old definition
 +      was incorrect when GCALIGNED was defined to be empty.
 +      (union Aligned_String): New type.
 +      (USE_STACK_CONS, USE_STACK_STRING): New constants, so that the
 +      implementation ports to compilers that don't align strictly enough.
 +      Don't worry about the union sizes; it's not worth bothering about.
 +      (scoped_cons, scoped_list1, scoped_list3, scoped_list4):
 +      Rewrite using USE_STACK_CONS.
 +      (scoped_cons): Assume the use of union Aligned_Cons.
 +      (lisp_string_size, make_local_string, build_local_string): Remove.
 +      Unless otherwise specified, all callers of build_local_string
 +      changed to use SCOPED_STRING.
 +      (SCOPED_STRING): New macro.
 +      * data.c (wrong_choice):
 +      * menu.c (single_menu_item):
 +      * process.c (Fformat_network_address):
 +      Hoist use of SCOPED_STRING out of a scope, so that its returned
 +      object lives long enough.
 +      * fileio.c (Fexpand_file_name): Use build_string, not SCOPED_STRING,
 +      as the string might be long or might not be ASCII.
 +
 +2014-09-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdos.c (internal_terminal_init): Bump version to 25.
 +
 +2014-09-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Keep stack-allocated Lisp objects fast rather than versatile.
 +      * lisp.h (union Aligned_Cons) [!GCALIGNED]: Define as such.
 +      (SCOPED_CONS_INITIALIZER): New macro.
 +      (scoped_cons) [USE_STACK_LISP_OBJECTS]: Use it.
 +      (USE_LOCAL_ALLOCA): Remove.
 +      (local_cons, local_list1, local_list2, local_list3, local_list4):
 +      Remove.  Stack overflow checking makes them too slow.
 +      (make_local_vector): Likewise.  Also we just don't have enough
 +      users for it.
 +      (enum LISP_STRING_OVERHEAD): Remove.
 +      (local_string_init, local_vector_init): Remove prototypes.
 +      (make_local_string, build_local_string): Redesign to target short
 +      compile-time string constants, fall back to regular string allocation
 +      where appropriate.
 +      (lisp_string_size): New function.
 +      (verify_ascii) [ENABLE_CHECKING]: Add prototype.
 +      * alloc.c (local_string_init, local_vector_init): Remove.
 +      (verify_ascii) [ENABLE_CHECKING]: New function.
 +      * buffer.c, charset.c, chartab.c, data.c, editfns.c, emacs.c, fileio.c:
 +      * fns.c, font.c, fontset.c, frame.c, keyboard.c, keymap.c, lread.c:
 +      * menu.c, minibuf.c, process.c, textprop.c, xdisp.c, xfns.c, xfont.c:
 +      * xselect.c, xterm.c: All related users changed.
 +
 +2014-09-28  Ken Brown  <kbrown@cornell.edu>
 +
 +      * sheap.c (bss_sbrk_buffer_beg): Remove redundant variable.
 +      * gmalloc.c [CYGWIN]: Adapt to change in sheap.c.
 +
 +2014-09-27  Ken Brown  <kbrown@cornell.edu>
 +
 +      Fix implementation of HYBRID_MALLOC on Cygwin.
 +      * sheap.c (bss_sbrk_buffer_end): Cast to void *.
 +      (bss_sbrk_buffer_beg): New variable.  Use it...
 +      * gmalloc.c (ALLOCATED_BEFORE_DUMPING) [CYGWIN]: ...here, to fix
 +      incorrect definition.
 +
 +2014-09-27  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (track-mouse): Rename to internal--track-mouse.
 +      Make it into a function and change arg to be a function.
 +
 +      * lisp.mk (lisp): Add elisp-mode.elc.
 +
 +2014-09-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xfns.c (x_default_scroll_bar_color_parameter):
 +      Use USE_LOCAL_ALLOCA only if USE_TOOLKIT_SCROLL_BARS,
 +      to pacify --enable-gcc-warnings in non-scrollbar builds.
 +
 +2014-09-26  Ken Brown  <kbrown@cornell.edu>
 +
 +      * w32term.h (ALIGN_STACK): Fix the cpp condition.
 +
 +2014-09-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Default to false for 32-bit
 +      MinGW builds that use GCC before 4.2.
 +
 +      Default to stack objects on DOS_NT platforms as well.
 +      * w32term.h (ALIGN_STACK) [__GNUC__]: Define to
 +      __attribute__((force_align_arg_pointer)) for GCC 4.2 and later.
 +
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Remove the !DOS_NT condition.
 +
 +      * w32proc.c (enum_locale_fn, enum_codepage_fn): Add the
 +      ALIGN_STACK attribute.
 +
 +      * w32fns.c (w32_monitor_enum): Add the ALIGN_STACK attribute.
 +
 +      * w32uniscribe.c (add_opentype_font_name_to_list): Add the
 +      ALIGN_STACK attribute.
 +
 +      * w32font.c (add_font_name_to_list, add_font_entity_to_list)
 +      (add_one_font_entity_to_list): Add the ALIGN_STACK attribute.
 +
 +2014-09-25  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (frame_inhibit_resize):
 +      * widget.c (EmacsFrameResize):
 +      * window.c (resize_frame_windows, Fset_window_configuration):
 +      * xdisp.c (expose_frame):
 +      * xfns.c (x_change_tool_bar_height):
 +      * xmenu.c (update_frame_menubar):
 +      * xterm.c (handle_one_xevent, x_new_font, x_set_window_size_1):
 +      Remove code left dead after 2014-07-27 changes.
 +
 +2014-09-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix local_cons etc. to not exhaust the stack when in a loop.
 +      Problem reported in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00696.html
 +      * buffer.c (Fother_buffer, other_buffer_safely, init_buffer):
 +      * charset.c (load_charset_map_from_file, Ffind_charset_region)
 +      (Ffind_charset_string):
 +      * chartab.c (uniprop_encode_value_numeric, uniprop_table):
 +      * data.c (wrong_range):
 +      * editfns.c (Fpropertize, format2):
 +      * emacs.c (init_cmdargs, decode_env_path):
 +      * fileio.c (auto_save_error):
 +      * fns.c (Fyes_or_no_p):
 +      * font.c (font_style_to_value, font_parse_xlfd)
 +      (font_parse_family_registry, font_delete_unmatched)
 +      (font_add_log):
 +      * fontset.c (Fset_fontset_font):
 +      * frame.c (x_get_arg):
 +      * keyboard.c (echo_dash, safe_run_hooks_error, parse_menu_item)
 +      (read_char_minibuf_menu_prompt):
 +      * keymap.c (silly_event_symbol_error, describe_vector):
 +      * lread.c (load_warn_old_style_backquotes):
 +      * menu.c (single_menu_item):
 +      * minibuf.c (Fread_buffer):
 +      * process.c (status_message, Fformat_network_address)
 +      (server_accept_connection):
 +      * textprop.c (copy_text_properties):
 +      * xdisp.c (Fcurrent_bidi_paragraph_direction):
 +      * xfns.c (x_default_scroll_bar_color_parameter):
 +      * xfont.c (xfont_open):
 +      * xselect.c (x_clipboard_manager_error_1):
 +      * xterm.c (x_term_init):
 +      Put USE_LOCAL_ALLOCA at the start of the function.
 +      * fns.c (maybe_resize_hash_table): Use build_string instead of
 +      build_local_string, since we'd otherwise need a conditional
 +      USE_LOCAL_ALLOCA here, but this is just debugging output and is
 +      not worth the bother of optimization.
 +      * font.c (font_delete_unmatched): Remove by-hand code that
 +      observed MAX_ALLOCA limit, since it's now done automatically.
 +      * keymap.c (Fsingle_key_description): Put USE_SAFE_ALLOCA at top,
 +      since build_local_string needs its sa_alloc.
 +      * lisp.h (lisp_word_count): New function.
 +      (SAFE_ALLOCA_LISP): Use it.
 +      (USE_LOCAL_ALLOCA): New macro.
 +      (local_cons, make_local_vector, make_local_string):
 +      Observe the MAX_ALLOCA limit.
 +      (LISP_STRING_OVERHEAD): New constant.
 +      (make_local_string): Use it.
 +
 +2014-09-24  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Default to stack objects on non-GNU/Linux, non-DOS_NT platforms.
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Also default to true
 +      if !defined DOS_NT && !defined GNU_LINUX.  I've tested this on AIX
 +      and Solaris and it's likely to work on similar platforms.
 +
 +      Avoid signed integer overflow when converting Time to ptrdiff_t.
 +      * keyboard.c (INPUT_EVENT_POS_MAX, INPUT_EVENT_POS_MIN):
 +      New macros.
 +      (position_to_Time, Time_to_position): New functions.
 +      (gen_help_event, kbd_buffer_get_event): Use them.
 +      * systime.h (Time) [emacs && !HAVE_X_WINDOWS]:
 +      Go back to plain 'unsigned long', so that 'Time' is the same
 +      for both X and non-X builds; this is less likely to cause surprise.
 +      * termhooks.h: Remove compile-time check that Time and ptrdiff_t
 +      are the same size; this is no longer required.
 +
 +      * keyboard.c (make_lispy_event): Avoid unnecessary tests
 +      of bit 28 and of whether an unsigned value is negative.
 +      This simplifies the code a bit, and pacifies clang 3.4.
 +
 +2014-09-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * systime.h (Time): Define as size_t, to be consistent with 64-bit
 +      Windows builds, where 'long' is a 32-bit type.
 +
 +      * w32inevt.h (w32_console_mouse_position): Update the argument
 +      types to use 'Time'.
 +
 +      * w32term.c (w32_mouse_position)
 +      (x_horizontal_scroll_bar_report_motion)
 +      (x_scroll_bar_report_motion): Update the argument types to use
 +      'Time'.
 +
 +2014-09-24  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * termhooks.h (enum scroll_bar_part): Begin from 0 to allow...
 +      (struct input_event): ...unsigned bitfields.  Likewise for
 +      `event_kind' member.  Prefer unsigned for `code' and 'modifiers'.
 +      Use `timestamp' for HELP_EVENT position.  Add compile-time assert.
 +      * keyboard.c (gen_help_event, kbd_buffer_store_help_event)
 +      (kbd_buffer_get_event): Adjust users.
 +      (scroll_bar_parts): Add Qnil to match scroll_bar_nowhere.
 +      (make_scroll_bar_position): New function, refactored out of...
 +      (make_lispy_event): ...adjusted user.
 +      * nsterm.h (EmacsScroller): Use enum for `last_hit_part' member.
 +      * nsterm.m (ns_mouse_position, mouseUp):
 +      * term.c (term_mouse_position):
 +      * w32inevt.c (w32_console_mouse_position):
 +      * w32term.c (w32_mouse_position):
 +      * xterm.c (XTmouse_position): Use scroll_bar_above_handle.
 +      (x_send_scroll_bar_event, xm_scroll_callback, xg_scroll_callback):
 +      Prefer enum and explicit enum members to integers and numeric values.
 +
 +      * chartab.c (uniprop_encode_value_numeric):
 +      * font.c (font_style_to_value): Use make_local_vector.
 +      (font_delete_unmatched): Use local_cons but respect MAX_ALLOCA.
 +      * keymap.c (append_key): Use scoped_list1.
 +
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Enable by default if GNU_LINUX
 +      && __GNUC__ && !__clang__.  Mention known problems.  Adjust comment.
 +
 +2014-09-24  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix some slow uses and misuses of strcat.
 +      * doc.c (get_doc_string):
 +      * gtkutil.c (get_utf8_string):
 +      * xsmfns.c (x_session_initialize):
 +      Avoid recomputation of string length.
 +      * ftfont.c (ftfont_spec_pattern):
 +      * xfns.c (xic_create_fontsetname):
 +      Don't assume output buffer is initially zero.
 +
 +2014-09-23  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * lisp.h (lispstpcpy): Rename from lispstrcpy, and act like stpcpy.
 +      All callers changed.
 +      * xterm.c (x_term_init): Use new functionality to avoid two needs
 +      to compute a string length.
 +
 +      * dispextern.h, xdisp.c (window_box_right_offset): Now static.
 +
 +2014-09-23  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Use known length of a Lisp string to copy it faster.
 +      * lisp.h (lispstrcpy): New function.  Add comment.
 +      * callproc.c (child_setup):
 +      * dbusbind.c (xd_append_arg):
 +      * doc.c (get_doc_string):
 +      * font.c (Ffont_xlfd_name):
 +      * frame.c (xrdb_get_resource):
 +      * process.c (Fmake_network_process, network_interface_info):
 +      * w32fns.c (Fx_open_connection):
 +      * w32proc.c (sys_spawnve):
 +      * xfns.c (select_visual):
 +      * xfont.c (xfont_list):
 +      * xsmfns.c (x_session_initialize):
 +      * xterm.c (x_term_init): Use it.
 +
 +2014-09-23  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix SAFE_ALLOCA to not exhaust the stack when in a loop.
 +      Reported by Dmitry Antipov in thread leading to:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00713.html
 +      This patch fixes only SAFE_ALLOCA, SAFE_NALLOCA, and SAFE_ALLOCA_LISP;
 +      the experimental local_* macros enabled by USE_LOCAL_ALLOCATORS
 +      remain unfixed.
 +      * callproc.c (call_process): Save and restore sa_avail.
 +      * lisp.h (USE_SAFE_ALLOCA): Define sa_avail.
 +      (AVAIL_ALLOCA): New macro.
 +      (SAFE_ALLOCA, SAFE_NALLOCA, SAFE_ALLOCA_LISP):
 +      Use it, and check against sa_avail rather than MAX_ALLOCA.
 +
  2014-09-22  Dmitry Antipov  <dmantipov@yandex.ru>
  
        On OSX, do not free font-specific data more than once (Bug#18501).
        * macfont.m (macfont_close): Release and free font-specific data
        only if it wasn't previously freed.
  
 -2014-09-21  David Caldwell <david@porkrind.org>  (tiny change)
 +2014-09-22  David Caldwell <david@porkrind.org>  (tiny change)
  
        * unexmacosx.c (dump_it): Improve error message.
  
 -2014-09-18  Juri Linkov  <juri@jurta.org>
 +2014-09-22  Juri Linkov  <juri@jurta.org>
  
        * image.c (imagemagick_load_image): Add delay to imagemagick metadata.
        (Bug#10747, bug#18334)
  
 -2014-09-18  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-22  Eli Zaretskii  <eliz@gnu.org>
  
        * frame.c (Fmouse_position, Fset_mouse_position): Clarify the
        units in which the position is measured.  (Bug#18493)
        * xdisp.c (redisplay_internal): Force redisplay of all windows
        that show a buffer whose narrowing has changed.  (Bug#18490)
  
 -2014-09-16  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-22  Eli Zaretskii  <eliz@gnu.org>
  
        * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor):
        * w32term.c (x_draw_hollow_cursor, x_draw_bar_cursor): In R2L
        every window except the leftmost one.  Reported by Martin Rudalics
        <rudalics@gmx.at>.
  
 -2014-09-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-09-22  Dmitry Antipov  <dmantipov@yandex.ru>
  
        Always use matched specpdl entry to record call arguments (Bug#18473).
        * lisp.h (record_in_backtrace): Adjust prototype.
        overflow on string size calculation.
        * data.c (Faset): Likewise for byte index.
  
 -2014-09-15  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-22  Eli Zaretskii  <eliz@gnu.org>
  
        Fix display of R2L lines in partial-width windows.
        * xdisp.c (init_iterator): Don't use it->bidi_p before it is
        of the right one.
        (produce_special_glyphs): Fix bogus assignments.
  
 -2014-09-14  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-22  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fileio.c (Fexpand_file_name) [DOS_NT]: Make sure newdirlim is
 +      always set to a valid value.  Make sure the size passed to alloca
 +      is always positive.  (Bug#18516)
 +
 +2014-09-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid extra call to oblookup when interning symbols.
 +      * lisp.h (intern_driver): Add prototype.
 +      * lread.c (intern_driver): New function.
 +      (intern1, intern_c_string_1, Fintern):
 +      * font.c (font_intern_prop):
 +      * w32font.c (intern_font_name): Use it.
 +
 +2014-09-21  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor improvements to new stack-allocated Lisp objects.
 +      * frame.h (FRAME_PARAMETER):
 +      Prefer scoped_list1 to local_list1 where either would do.
 +      * lisp.h (scoped_list4): New macro.
 +      (local_cons, local_list1, local_list2, local_list3, local_list4)
 +      (make_local_vector, make_local_string, build_local_string):
 +      Prefer functions to macros where either would do.
 +      * xdisp.c (build_desired_tool_bar_string):
 +      Prefer scoped_list4 to local_list4 where either would do.
 +
 +2014-09-18  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      More and more stack-allocated Lisp objects if USE_LOCAL_ALLOCATORS.
 +      * lisp.h (local_list4) [USE_LOCAL_ALLOCATORS]: New macro.
 +      [!USE_LOCAL_ALLOCATORS]: Fall back to regular list4.
 +      * frame.h (FRAME_PARAMETER): New macro.
 +      * dispnew.c (init_display):
 +      * fontset.c (Fset_fontset_font):
 +      * frame.c (x_default_parameter):
 +      * xfaces.c (set_font_frame_param, Finternal_merge_in_global_face):
 +      * xfns.c (x_default_scroll_bar_color_parameter)
 +      (x_default_font_parameter, x_create_tip_frame): Use it.
 +      * editfns.c (Fpropertize): Use local_cons.
 +      * process.c (status_message): Use build_local_string.
 +      * xfont.c (xfont_open): Use make_local_string.
 +      * xdisp.c (build_desired_tool_bar_string): Use local_list4.
 +
 +2014-09-18  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port USE_LOCAL_ALLOCATORS code to clang 3.4 x86-64.
 +      * lisp.h (USE_LOCAL_ALLOCATORS): Define only if __GNUC__ &&
 +      !__clang__.  This works with GCC and with clang and is safer for
 +      compilers we don't know about.
 +      (local_cons): Rename parameter to make capture less likely.
 +
 +2014-09-17  Samuel Bronson  <naesten@gmail.com>
 +
 +      * unexmacosx.c (copy_data_segment): Port to GCC 4.6+ (Bug#9927).
 +
 +2014-09-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix minor problems found by static checking.
 +      * alloc.c, lisp.h (SAVE_TYPE_INT_OBJ, make_save_int_obj):
 +      Remove; now unused.
 +      * buffer.h (decode_buffer): Doc and indentation fixes.
 +      * fns.c (Qstring_collate_lessp, Qstring_collate_equalp): Now static.
 +
 +2014-09-17  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid clang-specific warnings.
 +      * buffer.c (init_buffer): Shut up -Wself-assign.
 +      * process.c (server_accept_connection): Shut up -Wunsequenced.
 +
 +2014-09-16  Daniel Colascione  <dancol@dancol.org>
 +
 +      * fns.c (sxhash): For symbols, use address as hash code.
 +
 +2014-09-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      If USE_LOCAL_ALLOCATORS, allocate even more Lisp objects on stack.
 +      * charset.c (load_charset_map_from_file): Use scoped_list2
 +      and build_local_string.
 +      * buffer.c (Fother_buffer, other_buffer_safely, init_buffer):
 +      * emacs.c (init_cmdargs, decode_env_path):
 +      * fileio.c (Fexpand_file_name):
 +      * fns.c (maybe_resize_hash_table) [ENABLE_CHECKING]:
 +      * frame.c (x_get_arg):
 +      * keyboard.c (safe_run_hooks_error):
 +      * lread.c (load_warn_old_style_backquotes):
 +      * xdisp.c (Fcurrent_bidi_paragraph_direction):
 +      * xfns.c (x_default_scroll_bar_color_parameter, select_visual):
 +      * xselect.c (x_clipboard_manager_error_1)
 +      (x_clipboard_manager_save_all):
 +      * xterm.c (x_term_init): Use build_local_string.
 +
 +      Avoid more integer overflows on string size calculations.
 +      * category.c (Fmake_category_set):
 +      * xdisp.c (get_overlay_arrow_glyph_row):
 +      * w32font.c (intern_font_name): Prefer ptrdiff_t to int.
 +
 +2014-09-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * sound.c [WINDOWSNT]: Include w32common.h and mbstring.h.
 +      (SOUND_WARNING) [WINDOWSNT]: Include in do..while and improve the
 +      error message format.  Use message_with_string to have non-ASCII
 +      file names properly displayed.
 +      (do_play_sound) [WINDOWSNT]: Use Unicode APIs to play sound files
 +      when w32-unicode-filenames is non-nil, but not on Windows 9X,
 +      where these APIs are not available even in UNICOWS.DLL.
 +      Improve the format of error messages and include the file name in them
 +      where appropriate.
 +      (Fplay_sound_internal) [WINDOWSNT]: Make the MS-Windows branch
 +      call play-sound-functions, per documentation.
 +
 +      * w32.c (w32_get_long_filename, w32_get_short_filename):
 +      Constify the input file name arguments.
 +
 +      * w32.h (w32_get_long_filename, w32_get_short_filename):
 +      Update prototypes.
 +
 +2014-09-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      If USE_LOCAL_ALLOCATORS, allocate some Lisp objects on stack.
 +      * lisp.h (local_cons, local_list1, local_list2, local_list3)
 +      [USE_LOCAL_ALLOCATORS]: New macros.
 +      [!USE_LOCAL_ALLOCATORS]: Fall back to regular functions.
 +      (build_local_string): Avoid argument name expansion clash with
 +      make_local_string.
 +      * alloc.c (toplevel)
 +      [USE_LOCAL_ALLOCATORS && GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS]:
 +      Preprocessor guard to avoid impossible configuration.
 +      * charset.c (Ffind_charset_region, Ffind_charset_string):
 +      Use make_local_vector.
 +      * lread.c (read1, substitute_object_recurse): Use scoped_cons.
 +      * textprop.c (Fput_text_property, Fadd_face_text_property):
 +      Use scoped_list2.
 +      (copy_text_properties): Use local_cons and local_list3.
 +      * chartab.c (uniprop_table):
 +      * data.c (wrong_choice, wrong_range):
 +      * doc.c (get_doc_string):
 +      * editfns.c (format2):
 +      * fileio.c (Fexpand_file_name, auto_save_error):
 +      * fns.c (Fyes_or_no_p):
 +      * font.c (font_parse_xlfd, font_parse_family_registry, font_add_log):
 +      * fontset.c (Fset_fontset_font):
 +      * keyboard.c (echo_add_key, echo_dash, parse_menu_item)
 +      (read_char_minibuf_menu_prompt):
 +      * keymap.c (silly_event_symbol_error, describe_vector):
 +      * menu.c (single_menu_item):
 +      * minibuf.c (Fread_buffer):
 +      * process.c (status_message, Fformat_network_address)
 +      (server_accept_connection): Use make_local_string and
 +      build_local_string.  Prefer compound literals where appropriate.
 +
 +2014-09-15  Daniel Colascione  <dancol@dancol.org>
  
 -      * w32.c (fcntl): Support O_NONBLOCK fcntl on the write side of
 -      pipes.
 +      * fns.c (Fsort): Tweak sort docstring.
 +
 +2014-09-15  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (fcntl): Support O_NONBLOCK fcntl on the write side of pipes.
        (sys_write): When a write to a non-blocking pipe returns ENOSPC,
        set errno to EAGAIN instead, to allow the caller to retry the
        write after some waiting.  Fixes deadlocks when Emacs exchanges a
        lot of data through the pipe.  (Bug#18420)
  
 -2014-09-13  Eli Zaretskii  <eliz@gnu.org>
 -
        * sound.c (Fplay_sound_internal): Encode the sound file name in
        the ANSI codepage.  Expand it against data-directory, as per docs,
        not against the current directory.  No need to make a local copy
        the string with "?" replacement characters, which will fail the
        caller.  This avoids returning a random value in that case.
  
 -2014-09-11  Martin Rudalics  <rudalics@gmx.at>
 +2014-09-15  Martin Rudalics  <rudalics@gmx.at>
  
        * window.c (Fresize_mini_window_internal): Set w->total_lines
        from w->pixel_height (Bug#18422).
  
 -2014-09-09  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-09-15  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsterm.m (updateFrameSize:, initFrameFromEmacs:)
        (toggleFullScreen:): Take frame_resize_pixelwise into account when
        setting resize increments (Bug#18435).
  
 -2014-09-09  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-15  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (pos_visible_p): Properly save and restore the iterator
        state around the call to line_bottom, since it can move the
        iterator to another screen line.  This fixes off-by-one errors in
        the reported row in some rare cases.
  
 -2014-09-07  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-14  Jan Djärv  <jan.h.d@swipnet.se>
  
 -      * dispnew.c (prepare_desired_row): When MODE_LINE_P is zero,
 -      always make sure the marginal areas of the row are in sync with
 -      what the window wants.  (Bug#18419)
 +      * callproc.c (init_callproc): Fix bug introduced at
 +      2014-09-07 (Bug#18474).
  
 -2014-09-04  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-13  Dmitry Antipov  <dmantipov@yandex.ru>
  
 -      * data.c (set_internal): Use assq_no_quit, not Fassq, to find an
 -      existing binding of a variable, to avoid silently aborting
 -      commands that use specbind.  (Bug#18331)
 +      Prefer ptrdiff_t to int and avoid integer overflows.
 +      * fileio.c (make_temp_name):
 +      * font.c (font_parse_family_registry): Avoid integer
 +      overflow on string size calculation.
 +      * data.c (Faset): Likewise for byte index.
  
 -2014-09-02  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-12  Detlev Zundel  <dzu@member.fsf.org>
  
 -      * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in
 -      the reported row in the case of a window with a header line, by
 -      improving on the fix committed in 2011-10-08T10:58:50Z!eliz@gnu.org
 +      * buffer.c (syms_of_buffer): DEFSYM Qchoice (Bug#18337).
 +
 +2014-09-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * lisp.h (make_local_string): Nitpick indent.
 +      * print.c (Fprin1_to_string): Remove unused GCPROs.
 +
 +      More debugging aids around GCPROs.
 +      * lisp.h (struct gcpro) [DEBUG_GCPRO]: Add extra members.
 +      (GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6, GCPRO7):
 +      Minor restyle.  If DEBUG_GCPRO, initialize extra fields.
 +
 +      * lread.c (readevalloop_eager_expand_eval): Add GCPRO and fix
 +      bootstrap broken if GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE.
 +
 +      Remove redundant GCPROs around Ffuncall and Fapply calls.
 +      This is safe because Ffuncall protects all of its arguments by itself.
 +      * charset.c (map_charset_for_dump): Remove redundant GCPRO.
 +      * eval.c (Fapply, apply1, call0, call1, call2, call3, call4, call5)
 +      (call6, call7): Likewise.  Use compound literals where applicable.
 +      (run_hook_with_args_2): Use compound literal.
 +
 +2014-09-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Pacify --enable-gcc-warnings when no window system is used.
 +      These warnings found that subscript error, so they seem worthwhile.
 +      * composite.c (char_composable_p): Simplify a bit.
 +      * frame.c (x_set_frame_parameters): Add an IF_LINT.
 +      * frame.c (x_set_horizontal_scroll_bars, x_set_scroll_bar_height):
 +      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS):
 +      * window.c (set_window_scroll_bars):
 +      Use USE_HORIZONTAL_SCROLL_BARS for simplicity.
 +      * frame.h [! USE_HORIZONTAL_SCROLL_BARS]:
 +      Ignore -Wsuggest-attribute=const.
 +      * window.h (USE_HORIZONTAL_SCROLL_BARS): New macro.
 +      (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): Use it.
 +
 +2014-09-10  Paul Eggert  <eggert@penguin.cs.ucla.edu>
 +
 +      * charset.c (Fget_unused_iso_final_char): Fix subscript error.
 +      Use check_iso_charset_parameter instead of doing the checks by hand.
 +      (check_iso_charset_parameter): Move up.  Check parameters a bit
 +      more carefully, and return true for 96-char sets.  All callers changed.
 +
 +2014-09-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Simplify lisp.h by removing the __COUNTER__ business.
 +      Reported by Dmitry Antipov in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00220.html
 +      * lisp.h (make_local_vector, make_local_string)
 +      (build_local_string): Simplify by not bothering with __COUNTER__.
 +      The __COUNTER__ business wasn't working properly, and was needed
 +      only for hypothetical future expansion anyway.
 +
 +2014-09-10  Alp Aker  <alp.tekin.aker@gmail.com>
 +
 +      * nsterm.m (ns_draw_fringe_bitmap): Use the same logic as other
 +      terms to determine bitmap color.  (Bug#18437)
 +
 +2014-09-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (sys_write): Use SAFE_NALLOCA for the NL -> CRLF
 +      translation buffer.
 +
 +2014-09-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xterm.c (handle_one_xevent): Add braces to pacify gcc -Wall.
 +
 +2014-09-10  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (handle_one_xevent): Detect iconified by looking at
 +      _NET_WM_STATE_HIDDEN.
 +
 +2014-09-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * lisp.h (DEFINE_GDB_SYMBOL_ENUM): Remove.
 +      These can generate a constant with the correct value but the wrong
 +      width, which doesn't work as a printf argument.  All uses removed.
 +      Reported by Dmitry Antipov in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00213.html
 +      (ENUMABLE): Remove; no longer needed.
 +      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 +      Remove; no longer needed because of the above change.
 +      Each definiens moved to the only use.
 +
 +      Improve the experimental local and scoped allocation.
 +      * alloc.c (local_string_init, local_vector_init):
 +      New functions, defined if USE_LOCAL_ALLOCATORS.
 +      Mostly, these are moved here from lisp.h, as it's not
 +      clear it's worth making them inline.
 +      * lisp.h (USE_STACK_LISP_OBJECTS): Default to false.
 +      (GCALIGNED): Depend on HAVE_STRUCT_ATTRIBUTE_ALIGNED and
 +      USE_STACK_LISP_OBJECTS, not on a laundry list.
 +      (local_string_init, local_vector_init): New decls.
 +      (union Aligned_Cons): New type.
 +      (scoped_cons): Use it.  Give up on the char trick, as it's a too
 +      much of a maintenance hassle; if someone wants this speedup
 +      they'll just need to convince their compiler to align properly.
 +      Conversely, use the speedup if struct Lisp_Cons happens to
 +      be aligned even without a directive.  Better yet, help it along
 +      by using union Aligned_Cons rather than struct Lisp_Cons.
 +      (pointer_valid_for_lisp_object): Remove.  This check is not
 +      necessary, since make_lisp_ptr is already doing it.  All uses removed.
 +      (local_vector_init, local_string_init): Move to alloc.c.
 +      (build_local_vector): Remove this awkward macro, replacing with ...
 +      (make_local_vector): New macro, which acts more like a function.
 +      Use statement expressions and use __COUNTER__ to avoid macro
 +      capture.  Fall back on functions if these features are not supported.
 +      (build_local_string, make_local_string): Likewise.
 +
 +2014-09-09  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xterm.c (x_term_init): Consolidate duplicated code.
 +      [USE_LUCID]: Revert 2014-04-02 change (Bug#18403).  Add comment.
 +      (x_delete_terminal): Do not close X connection fd (Bug#18403).
 +      Add eassert and mark dpyinfo as dead only if it was alive.
 +
 +      Add macros to allocate temporary Lisp objects with alloca.
 +      Respect MAX_ALLOCA and fall back to regular GC for large objects.
 +      * character.h (parse_str_as_multibyte): Move prototype to ...
 +      * lisp.h (parse_str_as_multibyte): ... here.
 +      (struct Lisp_Cons): Add GCALIGNED attribute if supported.
 +      (scoped_cons, scoped_list2, build_local_vector, build_local_string):
 +      New macros.
 +      (scoped_cons_init, pointer_valid_for_lisp_object, local_vector_init)
 +      (local_string_init): New functions.
 +      * alloc.c (verify_alloca) [ENABLE_CHECKING]: New function.
 +      (init_alloc_once): Call it.
 +
 +      Cleanup last change and make all new stuff conditional.
 +      * lisp.h (build_local_string): Rename to ...
 +      (make_local_string): ... this macro.
 +      (build_local_string, scoped_list1, scoped_list3): New macros.
 +      (toplevel) [USE_STACK_LISP_OBJECTS]: Define all new macros
 +      and functions as such, use regular fallbacks otherwise.
 +      * alloc.c (verify_alloca) [USE_STACK_LISP_OBJECTS]: Define
 +      conditionally.
 +
 +2014-09-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (prepare_desired_row): When MODE_LINE_P is zero,
 +      always make sure the marginal areas of the row are in sync with
 +      what the window wants.  (Bug#18419)
 +
 +      * data.c (set_internal): Use assq_no_quit, not Fassq, to find an
 +      existing binding of a variable, to avoid silently aborting
 +      commands that use specbind.  (Bug#18331)
 +
 +2014-09-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix bug uncovered by changing alloca to auto buffer (Bug#18410).
 +      * coding.c (growable_destination): New function.
 +      (produce_chars): Use it for sanity checks.  Do not fiddle with
 +      dst_end if the source and destination are both nil, as it's
 +      the caller's responsibility to avoid overlap.
 +      * keyboard.c (read_decoded_event_from_main_queue):
 +      The destination must be MAX_MULTIBYTE_LENGTH times the max source
 +      length, not 4 times, to prevent decode_coding_c_string from trying
 +      to reallocate a destination.  This removes the need for the FIXME.
 +
 +      * callproc.c (exec_failed) [DOS_NT]: Define a dummy.
 +      All callers simplified.  Add a comment about exec_failed, vfork,
 +      and alloca.
 +
 +      Adjust drag-and-drop fix when window is above top (Bug#18303).
 +      * xselect.c (x_fill_property_data): Don't let sign bit of negative
 +      XCDR bleed into XCAR's encoded value.  Improve checks for
 +      out-of-range data while we're at it.
 +
 +2014-09-07  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xselect.c (x_fill_property_data): Handle negative XCDR when data
 +      is CONSP (Bug#18303).
 +
 +2014-09-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * callproc.c (child_setup) [WINDOWSNT]: Don't call exec_failed if
 +      'alloca' gets passed arguments larger than MAX_ALLOCA.
 +
 +      * font.c (MAX): Define if not defined elsewhere.
 +
 +2014-09-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * keyboard.c (read_decoded_event_from_main_queue): Reinstitute alloca
 +      here for destination buffer, to work around what appears to be a
 +      bug in decode_coding_c_string when the source and destination are
 +      both C strings.
 +
 +      Use SAFE_ALLOCA etc. to avoid unbounded stack allocation (Bug#18410).
 +      This follows up on the recent thread in emacs-devel on alloca; see:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00042.html
 +      This patch also cleans up alloca-related glitches noted while
 +      examining the code looking for unbounded alloca.
 +      * alloc.c (listn):
 +      * callproc.c (init_callproc):
 +      Rewrite to avoid need for alloca.
 +      * buffer.c (mouse_face_overlay_overlaps)
 +      (report_overlay_modification):
 +      * buffer.h (GET_OVERLAYS_AT):
 +      * coding.c (make_subsidiaries):
 +      * doc.c (Fsnarf_documentation):
 +      * editfns.c (Fuser_full_name):
 +      * fileio.c (Ffile_name_directory, Fexpand_file_name)
 +      (search_embedded_absfilename, Fsubstitute_in_file_name):
 +      * fns.c (Fmake_hash_table):
 +      * font.c (font_vconcat_entity_vectors, font_update_drivers):
 +      * fontset.c (fontset_pattern_regexp, Ffontset_info):
 +      * frame.c (Fmake_terminal_frame, x_set_frame_parameters)
 +      (xrdb_get_resource, x_get_resource_string):
 +      * ftfont.c (ftfont_get_charset, ftfont_check_otf, ftfont_drive_otf):
 +      * ftxfont.c (ftxfont_draw):
 +      * image.c (xbm_load, xpm_load, jpeg_load_body):
 +      * keyboard.c (echo_add_key, menu_bar_items, tool_bar_items)
 +
 +      * keymap.c (Fdescribe_buffer_bindings, describe_map):
 +      * lread.c (openp):
 +      * menu.c (digest_single_submenu, find_and_call_menu_selection)
 +      (find_and_return_menu_selection):
 +      * print.c (PRINTFINISH):
 +      * process.c (Fformat_network_address):
 +      * scroll.c (do_scrolling, do_direct_scrolling, scrolling_1):
 +      * search.c (search_buffer, Fmatch_data, Fregexp_quote):
 +      * sound.c (wav_play, au_play):
 +      * syntax.c (skip_chars):
 +      * term.c (tty_menu_activate, tty_menu_show):
 +      * textprop.c (get_char_property_and_overlay):
 +      * window.c (Fset_window_configuration):
 +      * xdisp.c (safe__call, next_overlay_change, vmessage)
 +      (compute_overhangs_and_x, draw_glyphs, note_mouse_highlight):
 +      * xfaces.c (face_at_buffer_position):
 +      * xmenu.c (x_menu_show):
 +      Use SAFE_ALLOCA etc. instead of plain alloca, since the
 +      allocation size isn't bounded.
 +      * callint.c (Fcall_interactively): Redo memory_full check
 +      so that it can be done at compile-time on some platforms.
 +      * coding.c (MAX_LOOKUP_MAX): New constant.
 +      (get_translation_table): Use it.
 +      * callproc.c (call_process): Use SAFE_NALLOCA instead of
 +      SAFE_ALLOCA, to catch integer overflows on size calculation.
 +      (exec_failed) [!DOS_NT]: New function.
 +      (child_setup) [!DOS_NT]: Use it.
 +      * editfns.c (Ftranspose_regions):
 +      Hoist USE_SAFE_ALLOC + SAFE_FREE out of 'if'.
 +      * editfns.c (check_translation):
 +      Allocate larger buffers on the heap.
 +      * eval.c (internal_lisp_condition_case):
 +      Check for MAX_ALLOCA overflow.
 +      * fns.c (sort_vector): Use SAFE_ALLOCA_LISP rather than Fmake_vector.
 +      (Fbase64_encode_region, Fbase64_decode_region):
 +      Avoid unnecessary calls to SAFE_FREE before 'error'.
 +      * buffer.c (mouse_face_overlay_overlaps):
 +      * editfns.c (Fget_pos_property, check_translation):
 +      * eval.c (Ffuncall):
 +      * font.c (font_unparse_xlfd, font_find_for_lface):
 +      * ftfont.c (ftfont_drive_otf):
 +      * keyboard.c (echo_add_key, read_decoded_event_from_main_queue)
 +      (menu_bar_items, tool_bar_items):
 +      * sound.c (Fplay_sound_internal):
 +      * xdisp.c (load_overlay_strings, dump_glyph_row):
 +      Use an ordinary auto buffer rather than alloca, since the
 +      allocation size is fixed and small.
 +      * ftfont.c: Include <c-strcase.h>.
 +      (matching_prefix): New function.
 +      (get_adstyle_property): Use it, to avoid need for alloca.
 +      * keyboard.c (echo_add_key):
 +      * keymap.c (describe_map): Use ptrdiff_t, not int.
 +      * keyboard.c (echo_add_key): Prefer sizeof to strlen.
 +      * keymap.c (Fdescribe_buffer_bindings): Use SBYTES, not SCHARS,
 +      when counting bytes.
 +      * lisp.h (xlispstrdupa): Remove, replacing with ...
 +      (SAFE_ALLOCA_STRING): ... new macro with different API.
 +      This fixes a portability problem, namely, alloca result
 +      passed to another function.  All uses changed.
 +      (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Check for MAX_ALLOCA,
 +      not MAX_ALLOCA - 1.
 +      * regex.c (REGEX_USE_SAFE_ALLOCA, REGEX_SAFE_FREE)
 +      (REGEX_ALLOCATE): New macros.
 +      (REGEX_REALLOCATE, REGEX_ALLOCATE_STACK, REGEX_REALLOCATE_STACK)
 +      (REGEX_FREE_STACK, FREE_VARIABLES, re_match_2_internal):
 +      Use them.
 +      * xdisp.c (message3): Use SAFE_ALLOCA_STRING rather than doing it
 +      by hand.
 +      (decode_mode_spec_coding): Store directly into buf rather than
 +      into an alloca temporary and copying the temporary to the buf.
 +
 +2014-09-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * Makefile.in (EMACS_HEAPSIZE): Remove, no longer used.  (Bug#18416)
 +
 +2014-09-04  Jan D  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (x_term_init): Don't call x_session_initialize if running
 +      as a daemon (Bug#18375).
 +
 +      * xsmfns.c: Initialize ice_fd.
 +
 +2014-09-04  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Less chatter in 'make' output.
 +      * Makefile.in (AM_V_GEN, am__v_GEN_, am__v_GEN_0, am__v_GEN_1, AM_V_at)
 +      (am__v_at_, am__v_at_0, am__v_at_1):  New macros, taken from Automake.
 +      ($(etc)/DOC, buildobj.h, gl-stamp): Use them.
 +
 +2014-09-03  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * buffer.c (scroll-bar-height): Fix typo in doc-string.
 +      * frame.c (Vdefault_frame_horizontal_scroll_bars):
 +      Remove variable.
 +      * nsfns.m (Fx_create_frame):
 +      * w32fns.c (Fx_create_frame):
 +      * xfns.c (Fx_create_frame): Default horizontal scroll bars to
 +      nil.
 +
 +2014-09-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (buffer_posn_from_coords): Fix an off-by-one error in
 +      the reported row in the case of a window with a header line, by
 +      improving on the fix committed in 2011-10-08T10:58:50Z!eliz@gnu.org
        eliz@gnu.org-20111008105850-ht4tvsayohvr1kjc.  (Bug#18384)
  
 -2014-09-02  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-09-03  Paul Eggert  <eggert@cs.ucla.edu>
  
        * eval.c (internal_lisp_condition_case): Don't overrun the stack
        when configured --with-wide-int on typical 32-bit platforms.
  
 -2014-08-31  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-03  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (display_and_set_cursor): Call erase_phys_cursor also
        when HPOS is negative, for the benefit of R2L glyph rows whose
        newline overflows into the fringe.
  
 -2014-08-30  Ken Brown  <kbrown@cornell.edu>
 +2014-09-03  Ken Brown  <kbrown@cornell.edu>
  
 -      * conf_post.h (strnicmp) [CYGWIN && HAVE_NTGUI]: Define.
 -      (Bug#18366)
 +      * conf_post.h (strnicmp) [CYGWIN && HAVE_NTGUI]: Define.  (Bug#18366)
  
 -2014-08-28  Eli Zaretskii  <eliz@gnu.org>
 +2014-09-02  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * syntax.c (scan_lists): Don't examine positions before BEGV.
 -      (Bug#18339)
 +      Minor cleanup of recent strlen-avoiding patch.
 +      * fileio.c (CHECK_LENGTH): Remove.
 +      Rewrite callers so that they don't need it.
 +      (Fexpand_file_name) [DOS_NT]: Fix a case where directory length
 +      variable wasn't set.
 +
 +2014-09-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fileio.c (CHECK_LENGTH): New macro.
 +      (Fexpand_file_name): Use it and get rid of a few more calls
 +      to strlen and strcat.
 +      * callproc.c (egetenv_internal): Add arg and rename from egetenv ...
 +      * lisp.h (egetenv): ... because of a new inline function used to
 +      avoid calls to strlen for a compile-time constants.
 +
 +      * buffer.h (decode_buffer): New function.
 +      * buffer.c (Fbuffer_name, Fbuffer_file_name, Fbuffer_base_buffer)
 +      (Fbuffer_local_variables, Fbuffer_modified_p, Fbuffer_modified_tick)
 +      (Fbuffer_chars_modified_tick, Fdelete_all_overlays):
 +      * data.c (Flocal_variables_p):
 +      * fileio.c (Fverify_visited_file_modtime):
 +      * marker.c (live_buffer): Use it.
 +
 +2014-09-01  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Avoid extra calls to strlen in filesystem I/O routines.
 +      * fileio.c (Fexpand_file_name): Avoid calls to strlen if
 +      the length of 'newdir' is known or may be precalculated.
 +      (file_accessible_directory_p): Prefer to pass Lisp_Object,
 +      not 'char *', and so use precalculated length.
 +      (Ffile_accessible_directory_p):
 +      * callproc.c (encode_current_directory, init_callproc):
 +      * charset.c (init_charset):
 +      * lread.c (load_path_check, load_path_default): Adjust users.
 +      * lisp.h (file_accessible_directory_p): Tweak prototype.
 +
 +2014-09-01  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32proc.c (w32_compare_strings): Support "C" and "POSIX"
 +      locales.
 +
 +2014-09-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      --enable-silent-rules now suppresses more chatter.
 +      * Makefile.in (AM_DEFAULT_VERBOSITY, AM_V_CC, am__v_CC_)
 +      (am__v_CC_0, am__v_CC_1, AM_V_CCLD, am__v_CCLD_, am__v_CCLD_0)
 +      (am__v_CCLD_1): New macros, taken from Automake.
 +      (.c.o, .m.o, temacs$(EXEEXT)): Use them.
 +
 +      Clean up extern decls a bit.
 +      * bytecode.c: Include blockinput.h and keyboard.h rather
 +      than rolling their APIs by hand.
 +      * emacs.c: Include regex.h and rely on its and lisp.h's API
 +      rather than rolling them by hand.
 +      * lastfile.c: Include lisp.h, to check this file's API.
 +      * lisp.h (lisp_eval_depth, my_edata, my_endbss, my_endbss_static):
 +      New decls.
 +      * regex.h (re_max_failures): New decl.
 +      * unexcw.c, unexmacosx.c, unexw32.c:
 +      Rely on lisp.h's API rather than rolling it by hand.
 +      * vm-limit.c (__after_morecore_hook, __morecore, real_morecore):
 +      Declare at top level, to pacify GCC -Wnested-externs.
  
 -2014-08-25  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-31  Eli Zaretskii  <eliz@gnu.org>
  
 -      * conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Don't define.
 +      * xdisp.c (get_glyph_string_clip_rects): Don't let the width of a
 +      clipping rectangle become negative (i.e. large positive, since
 +      it's an unsigned data type).  This can happen in R2L hscrolled
 +      glyph rows, and caused us to draw the cursor glyph on the fringe.
 +      For the details, see
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00543.html.
 +
 +2014-08-31  Ken Brown  <kbrown@cornell.edu>
 +
 +      * gmalloc.c: Don't include <stdlib.h>.  Declare system malloc and
 +      friends before defining hybrid_malloc and friends if HYBRID_MALLOC
 +      is defined.  (Bug#18368)
 +
 +2014-08-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Vector-sorting fixes (Bug#18361).
 +      It's not safe to call qsort or qsort_r, since they have undefined
 +      behavior if the user-specified predicate is not a total order.
 +      Also, watch out for garbage-collection while sorting vectors.
 +      * fns.c: Include <vla.h>.
 +      (sort_vector_predicate) [!HAVE_QSORT_R]: Remove.
 +      (sort_vector_compare): Remove, replacing with ....
 +      (inorder, merge_vectors, sort_vector_inplace, sort_vector_copy):
 +      ... these new functions.
 +      (sort_vector): Rewrite to use the new functions.
 +      GCPRO locals, since the predicate can invoke the GC.
 +      Since it's in-place return void; caller changed.
 +      (merge): Use 'inorder', for clarity.
 +
 +      * sysdep.c (str_collate): Clear errno just before wcscoll(_l).
 +      One can't hoist this out of the 'if', because intervening calls to
 +      newlocale, twolower, etc. can change errno.
 +
 +2014-08-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * sysdep.c (str_collate) [__STDC_ISO_10646__]: Improve the
 +      wording of the error messages.
 +      (str_collate) [WINDOWSNT]: Signal an error if w32_compare_strings
 +      sets errno.
 +
 +      * w32proc.c (get_lcid_callback): Accept locale specifications
 +      without the country part, as in "enu" vs "enu_USA".
 +      (w32_compare_strings): Signal an error if a locale was specified,
 +      but couldn't be translated into a valid LCID.
 +
 +2014-08-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * sysdep.c (str_collate) [__STDC_ISO_10646__]: Move up setting errno.
 +
 +2014-08-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * sysdep.c (str_collate) [__STDC_ISO_10646__]: Do not look at
 +      errno after towlower_l.  errno's value is not specified after
 +      towlower_l.  Instead, assume that towlower_l returns its argument
 +      on failure, which is portable in practice.
 +
 +2014-08-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fns.c (Fstring_collate_lessp, Fstring_collate_equalp): Doc fix.
 +
 +      * w32proc.c (w32_compare_strings): Accept additional argument
 +      IGNORE_CASE.  Set up the flags for CompareStringW to ignore case
 +      if requested.  If w32-collate-ignore-punctuation is non-nil, add
 +      NORM_IGNORESYMBOLS to the flags.
 +      (LINGUISTIC_IGNORECASE): Define if not already defined.
 +      (syms_of_ntproc) <Vw32_collate_ignore_punctuation>: New variable.
 +
 +      * sysdep.c (str_collate) [WINDOWSNT]: Adapt to the interface
 +      change.
 +
 +2014-08-29  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * sysdep.c (LC_CTYPE, LC_CTYPE_MASK, towlower_l):
 +      Define substitutes for platforms that lack them.
 +      (str_collate): Add arguments locale and ignore_case.
 +
 +      * fns.c (Fstring_collate_lessp, Fstring_collate_equalp):
 +      Add optional arguments LOCALE and IGNORE-CASE.
 +
 +      * lisp.h (str_collate): Adapt argument list.
 +
 +2014-08-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Add vectors support to Fsort.
 +      * fns.c (sort_vector, sort_vector_compare): New functions.
 +      (sort_list): Likewise, refactored out of ...
 +      (Fsort): ... adjusted user.  Mention vectors in docstring.
 +      (sort_vector_predicate) [!HAVE_QSORT_R]: New variable.
 +      * alloc.c (make_save_int_obj): New function.
 +      * lisp.h (enum Lisp_Save_Type): New member SAVE_TYPE_INT_OBJ.
 +      (make_save_int_obj): Add prototype.
 +
 +      Fix last change to support Darwin/OSX and FreeBSD (Bug#18354).
 +      * sysdep.c (sort_vector_compare) [DARWIN_OS || __FreeBSD__]:
 +      Conditionally define to match system's qsort_r signature.
 +      (sort_vector) [DARWIN_OS || __FreeBSD__]: Likewise in call to qsort_r.
 +
 +2014-08-28  Ken Brown  <kbrown@cornell.edu>
 +
 +      Add support for HYBRID_MALLOC, allowing the use of gmalloc before
 +      dumping and the system malloc after dumping.  (Bug#18222)
 +
 +      * conf_post.h (malloc, realloc, calloc, free) [HYBRID_MALLOC]:
 +      Define as macros, expanding to hybrid_malloc, etc.
 +      (HYBRID_GET_CURRENT_DIR_NAME): New macro.
 +      (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Define as
 +      macro.
 +      * gmalloc.c: Set up the infrastructure for HYBRID_MALLOC, with a
 +      full implementation on Cygwin.  Remove Cygwin-specific code that
 +      is no longer needed.
 +      (malloc, realloc, calloc, free, aligned_alloc) [HYBRID_MALLOC]:
 +      Redefine as macros expanding to gmalloc, grealloc, etc.
 +      (DUMPED, ALLOCATED_BEFORE_DUMPING) [CYGWIN]: New macros.
 +      (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Undefine.
 +      (USE_PTHREAD, posix_memalign) [HYBRID_MALLOC]: Don't define.
 +      (hybrid_malloc, hybrid_calloc, hybrid_free, hybrid_realloc)
 +      [HYBRID_MALLOC]:
 +      (hybrid_get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]:
 +      (hybrid_aligned_alloc) [HYBRID_MALLOC && (HAVE_ALIGNED_ALLOC ||
 +      HAVE_POSIX_MEMALIGN)]: New functions.
 +      * alloc.c (aligned_alloc) [HYBRID_MALLOC && (ALIGNED_ALLOC ||
 +      HAVE_POSIX_MEMALIGN)]: Define as macro expanding to
 +      hybrid_aligned_alloc; declare.
 +      (USE_ALIGNED_ALLOC) [HYBRID_MALLOC && (ALIGNED_ALLOC ||
 +      HAVE_POSIX_MEMALIGN)]: Define.
 +      (refill_memory_reserve) [HYBRID_MALLOC]: Do nothing.
 +      * sysdep.c (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]:
 +      Define as macro, expanding to gget_current_dir_name, and define
 +      the latter.
 +      * emacs.c (main) [HYBRID_MALLOC]: Don't call memory_warnings() or
 +      malloc_enable_thread().  Don't initialize malloc.
 +      * lisp.h (NONPOINTER_BITS) [CYGWIN]: Define (because GNU_MALLOC is
 +      no longer defined on Cygwin).
 +      (refill_memory_reserve) [HYBRID_MALLOC]: Don't declare.
 +      * sheap.c (bss_sbrk_buffer_end): New variable.
 +      * unexcw.c (__malloc_initialized): Remove variable.
 +      * ralloc.c: Throughout, treat HYBRID_MALLOC the same as
 +      SYSTEM_MALLOC.
 +      * xdisp.c (decode_mode_spec) [HYBRID_MALLOC]: Don't check
 +      Vmemory_full.
 +
 +2014-08-28  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32term.c (w32_horizontal_scroll_bar_handle_click):
 +      In `event->y' return entire range (the size of the scroll bar minus
 +      that of the thumb).
 +      * xterm.c (xm_scroll_callback, xaw_jump_callback): In `whole'
 +      return entire range (the scaled size of the scroll bar minus
 +      that of the slider).  In `portion' return the scaled position of
 +      the slider.
 +      (xaw_jump_callback): Restore part of code for vertical scroll
 +      bar broken in change from 2014-07-27.
 +      (xaw_scroll_callback): Provide incremental scrolling with
 +      horizontal scroll bars.
  
 -2014-08-18  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-28  Eli Zaretskii  <eliz@gnu.org>
  
 -      * xdisp.c (handle_stop): Improve commentary.
 +      * conf_post.h (_GL_EXECINFO_INLINE) [MSDOS]: Don't define.
  
        * indent.c (Fvertical_motion): Fix vertical motion up through a
        display property after a newline.  (Bug#18276)
  
 -2014-08-17  Eli Zaretskii  <eliz@gnu.org>
 -
        * xdisp.c (display_line): Don't assume that the call to
        reseat_at_next_visible_line_start ends up at a character
        immediately following the newline on the previous line.
        * dispnew.c (buffer_posn_from_coords): Fix mirroring of X
        coordinate for hscrolled R2L screen lines.  (Bug#18277)
  
 -2014-08-11  Ken Brown  <kbrown@cornell.edu>
 +2014-08-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * sysdep.c (LC_COLLATE, LC_COLLATE_MASK): Give individual defaults
 +      (Bug#18051).
 +
 +2014-08-27  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * syntax.c (scan_lists): Don't examine positions before BEGV.
 +      (Bug#18339)
 +
 +2014-08-27  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve robustness of new string-collation code (Bug#18051).
 +      * sysdep.c (LC_COLLATE, LC_COLLATE_MASK, freelocale, locale_t)
 +      (newlocale, wcscoll_l): Define substitutes for platforms that
 +      lack them, so as to simplify the mainline code.
 +      (str_collate): Simplify the code by assuming the above definitions.
 +      Use wcscoll_l, not uselocale, as uselocale is too fragile.
 +      For example, the old version left the Emacs in the wrong locale if
 +      wcscoll reported an error.  Use 'int', not ptrdiff_t, for the int
 +      result.  Report an error if newlocale fails.
 +
 +2014-08-27  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * lisp.h (str_collate):
 +      * sysdep.c (str_collate): Return int.
 +      (str_collate) [__STDC_ISO_10646__]: Propagate error of wcscoll.
 +
 +2014-08-27  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Fix some glitches in previous change.
 +      * sysdep.c (stack_direction): Replace stack_grows_down
 +      to simplify calculation of stack boundaries.
 +      (handle_sigsegv): Check whether we really crash somewhere near
 +      to stack boundary, and handle fatal signal as usual if not.
 +      (init_sigsegv): Adjust accordingly.
 +      * keyboard.c (Vtop_level_message): Rename to
 +      Vinternal__top_level_message, as suggested by Stefan Monnier in
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00493.html
 +      All related users changed.
 +
 +2014-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Handle C stack overflow caused by too nested Lisp evaluation.
 +      * lisp.h (toplevel) [HAVE_STACK_OVERFLOW_HANDLING]: Declare
 +      siglongjmp point to transfer control from SIGSEGV handler.
 +      * keyboard.c (return_to_command_loop, recover_top_level_message)
 +      [HAVE_STACK_OVERFLOW_HANDLING]: New variables.
 +      (regular_top_level_message): New variable.
 +      (command_loop) [HAVE_STACK_OVERFLOW_HANDLING]: Handle non-local
 +      exit from SIGSEGV handler and adjust message displayed by Vtop_level
 +      if appropriate.
 +      (syms_of_keyboard): DEFVAR Vtop_level_message and initialize
 +      new variables described above.
 +      * sysdep.c [HAVE_SYS_RESOURCE_H]: Include sys/resource.h as such.
 +      (stack_grows_down, sigsegv_stack, handle_sigsegv)
 +      [HAVE_STACK_OVERFLOW_HANDLING]: New variables and function.
 +      (init_sigsegv): New function.
 +      (init_signals): Use it.
 +
 +2014-08-25  Ken Brown  <kbrown@cornell.edu>
 +
 +      * emacs.c (main): Remove use of obsolete macro
 +      G_SLICE_ALWAYS_MALLOC.
 +
 +2014-08-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Implement locale-sensitive string collation for MS-Windows.
 +      * w32proc.c (get_lcid_callback, get_lcid, w32_compare_strings):
 +      New functions.  (Bug#18051)
 +
 +      * w32.h (w32_compare_strings): Add prototype.
 +
 +      * w32.c <g_b_init_compare_string_w>: New global flag.
 +      (globals_of_w32): Initialize it.
 +
 +      * sysdep.c (str_collate) [WINDOWSNT]: Implementation for MS-Windows.
 +
 +      * fns.c (Fstring_collate_lessp, Fstring_collate_equalp)
 +      [WINDOWSNT]: Call str_collate on MS-Windows.
 +
 +2014-08-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      One more minor cleanup of font subsystem.
 +      * font.h (struct font_driver): Convert text_extents to
 +      return void because returned value is never actually used.
 +      * macfont.m (macfont_text_extents):
 +      * w32font.c (w32font_text_extents):
 +      * xftfont.c (xftfont_text_extents): Adjust to return void
 +      and assume that 'metrics' argument is always non-NULL.
 +      * ftfont.c (ftfont_text_extents):
 +      * xfont.c (xfont_text_extents): Likewise.  Avoid redundant memset.
 +
 +2014-08-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor cleanups of str_collate fix (Bug#18051).
 +      * fns.c (str_collate): Move decl from here ...
 +      * lisp.h (str_collate): ... to here.
 +      * sysdep.c (str_collate): Prune away some of the forest of ifdefs.
 +      Remove unnecessary casts.  Use SAFE_NALLOCA to avoid
 +      potential problems with integer overflow.  Don't assume
 +      setlocale succeeds.  Remove unnecessary test before restoring
 +      locale via setlocale, and free the copied setlocale string
 +      when done with it.
 +
 +2014-08-24  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * fns.c (Fstring_collate_lessp, Fstring_collate_equalp): New DEFUNs.
 +
 +      * sysdep.c (str_collate): New function.  (Bug#18051)
 +
 +2014-08-23  Karol Ostrovsky  <karol.ostrovsky@gmail.com>  (tiny change)
 +
 +      * Makefile.in (emacs$(EXEEXT)): Retry deletion of bootstrap-emacs
 +      if the initial "rm -f" fails.  This is for MinGW builds, where
 +      MS-Windows will not allow deleting the executable file of a
 +      running program.
 +
 +2014-08-20  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.c (w32_scroll_bar_handle_click)
 +      (w32_horizontal_scroll_bar_handle_click)
 +      (x_scroll_bar_report_motion)
 +      (x_horizontal_scroll_bar_report_motion): For SB_THUMBPOSITION and
 +      SB_THUMBTRACK, use the 32-bit position information returned by
 +      GetScrollInfo, not the 16-bit information returned in the Windows
 +      message sent to us.
 +
 +2014-08-19  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.c (w32_horizontal_scroll_bar_handle_click): Fix the
 +      second coordinate ('y') reported for dragging the horizontal
 +      scroll bar thumb.
 +
 +2014-08-19  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * xdisp.c (erase_phys_cursor): Fix confusion between window-relative
 +      and text area-relative x-coordinates.
 +
 +2014-08-17  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Avoid overwriting the reversed_p flags in the glyph matrices when
 +      init_iterator or start_display are called.
 +      * xdisp.c (init_iterator): Don't initialize the reversed_p flag of
 +      the glyph row here.
 +      (tool_bar_height, redisplay_tool_bar, try_window)
 +      (try_window_reusing_current_matrix, try_window_id)
 +      (get_overlay_arrow_glyph_row, display_menu_bar): Initialize the
 +      reversed_p flag of the iterator's glyph row where the glyph row
 +      is going to be redrawn.
 +
 +2014-08-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xdisp.c (set_horizontal_scroll_bar): Don't use uninitialized local.
 +
 +2014-08-16  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32term.c (w32_horizontal_scroll_bar_handle_click): In y part
 +      of emacs_event return length from si.nPage to si.nMax.
 +      * xdisp.c (set_horizontal_scroll_bar): For right-to-left text
 +      interchange start and end of thumb.
 +
 +2014-08-15  Ken Brown  <kbrown@cornell.edu>
  
        * gmalloc.c (_malloc_mutex, _aligned_blocks_mutex) [CYGWIN]: Use
        ERRORCHECK mutexes.  (Bug#18222)
  
 +2014-08-12  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (set_menu_bar_lines_1): Remove.
 +      (set_menu_bar_lines): Call change_frame_size instead of
 +      set_menu_bar_lines_1.
 +
 +2014-08-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m (Fx_create_frame): Call adjust_frame_size,
 +      set f->official.
 +
  2014-08-11  Glenn Morris  <rgm@gnu.org>
  
        * fileio.c: Revert 2013-01-31 change, which chose coding system for
        Move last piece back here from Fwrite_region.
        (Fwrite_region, syms_of_fileio): Update for above changes.
  
 -2014-08-09  Martin Rudalics  <rudalics@gmx.at>
 -
 -      * window.c (Fwindow_new_total, Fwindow_new_normal)
 -      (Fwindow_new_pixel, Fset_window_new_pixel)
 -      (Fset_window_new_total, Fset_window_new_normal): Second attempt
 -      to fix the doc-strings of these functions.  See:
 -      http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-08/msg00287.html
 -
 -2014-08-08  Martin Rudalics  <rudalics@gmx.at>
 +2014-08-11  Martin Rudalics  <rudalics@gmx.at>
  
        * window.c (Fwindow_valid_p): Fix doc-string (Bug#18194).
        (Fwindow_new_total, Fwindow_normal_size, Fwindow_new_normal)
        (Fwindow_new_pixel, Fset_window_new_pixel)
        (Fset_window_new_total, Fset_window_new_normal)
        (Fwindow_resize_apply): Fix doc-strings (see Bug#18112).
 +      See also:
 +      http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-08/msg00287.html
  
 -2014-08-07  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-11  Eli Zaretskii  <eliz@gnu.org>
  
        * fontset.c (Finternal_char_font): Recompute basic faces if the
        frame's face cache was cleared.  (Bug#18162)
  
 -2014-08-05  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-08-11  Dmitry Antipov  <dmantipov@yandex.ru>
  
        Fix bug with uninitialized undo list of an indirect buffer (Bug#18180).
        * buffer.c (Fmake_indirect_buffer): Initialize undo list with the
        base buffer's undo list.
  
 -2014-08-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-08-10  Reuben Thomas  <rrt@sc3d.org>
 +
 +      Fix a couple of recent inadvertent breaks of the MSDOS port.
 +      * msdos.c: include required menu.h
 +      * term.c: set correct menu_show_hook on MSDOS.
  
 -      Fix bug with an attempt to select uninitialized frame (Bug#18161).
 -      * xfns.c (Fx_create_frame): Move call to change_frame_size to
 -      a section where Lisp evaluation is disabled.  This way a pointer
 -      to uninitialized frame is not accessible from Lisp, which becomes
 -      critical if following call to x_figure_window_size throws an error.
 +2014-08-10  Martin Rudalics  <rudalics@gmx.at>
 +
 +      Fix handling of menu bar line on TTY frames (Bug#18136)
 +      (Bug#18196).
 +      * dispnew.c (handle_window_change_signal):
 +      * keyboard.c (Fsuspend_emacs): Call change_frame_size with
 +      frame's menu bar lines subtracted from height.
 +      * frame.c (frame_inhibit_resize): Inhibit resizing of TTY
 +      frames.
 +      (adjust_frame_size): Count in menu bar when setting FrameRows.
 +      (make_terminal_frame): When setting up the frame's lines and
 +      text height don't count in the menu bar.
 +      (Fmake_terminal_frame): Call adjust_frame_size with menu bar
 +      lines subtracted from height.
 +      (do_switch_frame): Set tty's FrameRows to number of total lines
 +      of frame.
 +      (Fframe_pixel_height, Fframe_pixel_width): If no window system
 +      is used, return total number of lines and columns.
 +      * menu.c (emulate_dialog_with_menu): Use FRAME_TOTAL_LINES instead
 +      of FRAME_LINES.
 +      * term.c (OUTPUT, tty_set_terminal_modes)
 +      (tty_set_terminal_window, tty_set_scroll_region)
 +      (tty_clear_to_end, tty_write_glyphs, tty_write_glyphs_with_face)
 +      (tty_ins_del_lines, tty_menu_display, tty_menu_activate):
 +      Use FRAME_TOTAL_LINES instead of FRAME_LINES.
 +      (Fresume_tty): Use FRAME_TOTAL_LINES instead of FRAME_LINES.
 +      Call change_frame_size with frame's menu bar lines subtracted
 +      from height.
 +      * w32console.c (w32con_clear_to_end, w32con_clear_frame)
 +      (w32con_ins_del_lines): Use FRAME_TOTAL_LINES instead of
 +      FRAME_LINES.
  
 -2014-08-02  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-08-09  Reuben Thomas  <rrt@sc3d.org>
 +
 +      * alloc.c (Fmemory_info): Remove a stray brace.
 +
 +      * process.c: Fix a comment typo.
 +
 +      * msdos.c, dosfns.c (init_dosfns): Remove support for DJGPP < 2.02.
 +
 +2014-08-09  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * widgetprv.h (EmacsFramePart): Remove font.
 +
 +      * widget.c (DEFAULT_FACE_FONT, EmacsFrameSetValues, setup_frame_gcs)
 +      (resources, setup_frame_cursor_bits): Remove unused variables and
 +      functions, esp. wrt. font (Bug#18227).
 +
 +2014-08-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xterm.c (x_delete_terminal): Plug file descriptor leak (Bug#17691).
 +
 +2014-08-07  Reuben Thomas  <rrt@sc3d.org>
 +
 +      Refer to MS-DOS using the same name everywhere.
 +
 +      * editfns.c: Fix a couple of ``MS-DOG''s missed in the previous
 +      commit.
 +      * xfaces.c: ditto.
 +
 +2014-08-05  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32term.c (w32_redeem_scroll_bar):
 +      * xterm.c (XTredeem_scroll_bar): Revert part of last change by
 +      not redeeming scroll bars that have been turned off.
 +
 +2014-08-05 Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * keyboard.c (safe_run_hooks): Follow the convenient style to bind
 +      inhibit-quit to t and pass 2 args to safe_run_hook_funcall.  See
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00077.html>.
 +      (safe_run_hook_funcall): Adjust accordingly.
 +
 +2014-08-04  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS):
 +      Condition correctly according to toolkit used.
 +      * frame.c (make_initial_frame, make_terminal_frame)
 +      (x_set_horizontal_scroll_bars, x_set_scroll_bar_height)
 +      (Vdefault_frame_horizontal_scroll_bars): Correctly condition
 +      assignments according to presence of toolkit scrollbars.
 +      * window.h (WINDOW_HAS_HORIZONTAL_SCROLL_BAR):
 +      Condition correctly according to toolkit used.
 +      * window.c (set_window_scroll_bars): Set horizontal scroll bar
 +      only if toolkit supports it.
 +      * w32term.c (w32_redeem_scroll_bar): Always redeem scroll bar if
 +      present.
 +      * xterm.c (x_scroll_bar_create): Initialize horizontal slot for
 +      non-toolkit builds.
 +      (XTredeem_scroll_bar): Always redeem scroll bar if present.
 +
 +2014-08-04 Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * keyboard.c (safe_run_hook_funcall): Avoid consing around
 +      Vinhibit_quit and prefer internal_condition_case_n to pass args.
 +      (safe_run_hooks_error, safe_run_hooks_1): Adjust accordingly.
 +      (safe_run_hooks): Remove comment which is not relevant any more.
 +
 +2014-08-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't let big frames overrun the stack.
 +      * dispnew.c (mirrored_line_dance, mirror_line_dance, scrolling):
 +      Use SAFE_NALLOCA, not alloca.
  
        Fix bug with clang + directory_files_internal + GC (Bug#16986).
        * dired.c (directory_files_internal): Use a volatile variable
        so that x_delete_terminal has a file descriptor to pass to
        delete_keyboard_wait_descriptor.
  
 +      Don't mishandle year-9999 dates (Bug#18176).
 +      * editfns.c (decode_time_components): Store an invalid timespec
 +      on overflow, instead of returning false, so that the caller can
 +      distinguish overflow from other errors.
 +      (lisp_time_argument, lisp_seconds_argument): If the time is out
 +      of range, signal a time overflow instead of an invalid time spec.
 +      * keyboard.c (decode_timer): Treat time overflow like other
 +      timespec errors.
 +
 +      Avoid undefined behavior with signed left shift.
 +      Caught by 'gcc -fsanitize=undefined'.
 +      * dispextern.h, scroll.c (scrolling_max_lines_saved, scrolling_1):
 +      * dispnew.c (line_hash_code, scrolling):
 +      * scroll.c (calculate_scrolling, calculate_direct_scrolling):
 +      Use 'unsigned', not 'int', for line hashes.
 +      (scrolling_max_lines_saved): Avoid mystery constants for hash sizes.
 +
 +2014-08-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Make compare-strings more compatible with old behavior (Bug#17903).
 +      * fns.c (Fcompare_strings): Silently bring too-large ends into range.
 +
 +2014-08-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * gtkutil.c (create_dialog): Force min spacing 10 between buttons.
 +      Don't add label between left and right buttons (Bug#18129).
 +
 +2014-08-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Make functions static that no longer need to be extern.
 +      * frame.c, frame.h (set_menu_bar_lines):
 +      * keyboard.c (Qleftmost, Qrightmost):
 +      * xfns.c, frame.h, menu.h (x_set_menu_bar_lines, x_set_tool_bar_lines)
 +      (x_set_internal_border_width):
 +      Now static.
 +
  2014-08-01  Eli Zaretskii  <eliz@gnu.org>
  
        Fix display of R2L lines when the last character fits only partially.
        line.  When the last glyph fits only partially, give the row a
        negative x offset.
  
 -2014-07-29  Eli Zaretskii  <eliz@gnu.org>
 -
        Fix hscroll of R2L lines that begin with a TAB or another wide glyph.
        * xdisp.c (append_stretch_glyph): In a R2L glyph row, decrease the
        pixel width of the first glyph that is hscrolled from display.
        (display_line): In R2L glyph rows, don't give a negative offset to
        row->x when the first glyph begins before first_visible_x.
  
 -2014-07-29  Andreas Schwab  <schwab@suse.de>
 +      * xdisp.c (display_line): If called with iterator set up to write
 +      to a marginal area, delay the call to handle_line_prefix until we
 +      switch back to the text area.  (Bug#18035)
 +
 +      * .gdbinit (xwindow): The members total_cols, total_lines,
 +      left_col, and top_line are C integers (and has been so for the
 +      last 1.5 years).
 +
 +2014-08-01  Andreas Schwab  <schwab@suse.de>
  
        * macros.c (Fstart_kbd_macro): Initialize kbd_macro_ptr and
        kbd_macro_end together with kbd_macro_buffer.  (Bug#18140)
  
 -2014-07-28  Eli Zaretskii  <eliz@gnu.org>
 +2014-08-01  Dmitry Antipov  <dmantipov@yandex.ru>
  
 -      * xdisp.c (display_line): If called with iterator set up to write
 -      to a marginal area, delay the call to handle_line_prefix until we
 -      switch back to the text area.  (Bug#18035)
 +      * atimer.c (toplevel) [HAVE_TIMERFD]: Include errno.h.
 +      (timerfd_callback): Ignore weird events with no data.  Add tight
 +      assertions and comments.
 +      (init_atimer) [HAVE_TIMERFD]: Add environment variable to optionally
 +      disable timerfd-based timer.  Use TFD_NONBLOCK for timer descriptor.
 +
 +2014-08-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * frame.c (x_set_frame_parameters): Fix typo in previous patch.
 +      I had confused && with ||.
 +
 +2014-07-31  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Simplify timerfd configuration and fix some minor glitches.
 +      * atimer.c (TIMERFD_CREATE_FLAGS): Remove; we now assume TFD_CLOEXEC.
 +      (alarm_timer, alarm_timer_ok, set_alarm, init_atimer):
 +      Fall back on timer_create if timerfd_create fails at runtime.
 +      (resolution) [HAVE_CLOCK_GETRES]: Remove; we now rely on the
 +      kernel primitives to do resolution.  All uses removed.
 +      (timerfd) [!HAVE_TIMERFD]: Define to be -1, for convenience.
 +      (turn_on_atimers): Clear timer_create-based timers too,
 +      for consistency.
 +
 +      * frame.c (x_set_frame_parameters): Don't use uninitialized locals.
 +      Without this change, the code can access the local variable 'width'
 +      even when it has not been initialized, and likewise for 'height';
 +      in either case this leads to undefined behavior.
 +
 +2014-07-30  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xrdb.c (x_load_resources) [USE_MOTIF]: Although not strictly
 +      necessary, put horizontal scroll bar resources as well.  See
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00430.html>.
 +      * xterm.c (x_sync_with_move): Really wait 0.5s, not 0.0005s.
 +
 +2014-07-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xrdb.c (x_load_resources) [!USE_MOTIF]: Put horizontal scroll bar
 +      background value to match the resource of its vertical counterpart.
 +
 +2014-07-29  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (adjust_frame_size): Use FRAME_WINDOW_P instead of
 +      FRAME_X_WINDOW when calling x_set_window_size (Bug#18138).
 +
 +2014-07-28  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * frame.c (x_set_frame_parameters): Revert part of 2014-07-24
 +      change that added the top margin height to the requested height
 +      and revert (undocumented) part of 2014-07-28 change that changed
 +      the logic of whether a size change occurred.
 +
 +2014-07-28  Eli Zaretskii  <eliz@gnu.org>
  
        * .gdbinit (xwindow): The members total_cols, total_lines,
        left_col, and top_line are C integers (and has been so for the
        last 1.5 years).
  
 -2014-07-20  Jan Djärv  <jan.h.d@swipnet.se>
 +      * .gdbinit (xsubchartable): The members 'depth' and 'min_char' are
 +      now C integers.
 +
 +2014-07-28  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      On GNU/Linux, use timerfd for asynchronous timers.
 +      * atimer.c (toplevel) [HAVE_TIMERFD]: Include sys/timerfd.h.
 +      (toplevel): Rename alarm_timer_ok to special_timer_available.
 +      [HAVE_TIMERFD]: Declare timerfd.
 +      [HAVE_CLOCK_GETRES]: Declare resolution.
 +      (start_atimer) [HAVE_CLOCK_GETRES]: Round up timestamp to
 +      system timer resolution.
 +      (set_alarm) [HAVE_TIMERFD]: Use timerfd_settime.
 +      (timerfd_callback) [HAVE_TIMERFD]: New function.
 +      (atimer_result, debug_timer_callback, Fdebug_timer_check)
 +      [ENABLE_CHECKING]: New function for the sake of automated tests.
 +      (init_atimer) [HAVE_TIMERFD]: Setup timerfd.
 +      [HAVE_CLOCK_GETRES]: Likewise for system timer resolution.
 +      [ENABLE_CHECKING]: Defsubr test function.
 +      * atimer.h (timerfd_callback) [HAVE_TIMERFD]: Add prototype.
 +      * lisp.h (add_timer_wait_descriptor) [HAVE_TIMERFD]: Likewise.
 +      * process.c (add_timer_wait_descriptor) [HAVE_TIMERFD]: New function.
 +
 +      Fix --without-x build and pacify --enable-gcc-warnings.
 +      Problems reported in Bug#18122 and Bug#18124.
 +      * frame.c (get_frame_param): Define even if !HAVE_WINDOW_SYSTEM.
 +      (frame_windows_min_size): Now static.
 +      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS) [!HAVE_WINDOW_SYSTEM]:
 +      Define as no-op.
 +      (adjust_frame_size): Always declare prototype.
 +
 +      Fix Gnus-related issues reported by David Kastrup <dak@gnu.org> in
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00370.html>.
 +      * atimer.c (timerfd_callback): Always read expiration data.
 +      Add comment.
 +      (turn_on_atimers) [HAVE_TIMERFD]: Disarm timerfd timer.
 +      * process.c (add_timer_wait_descriptor): Add timer descriptor
 +      to input_wait_mask and non_process_wait_mask as well.
 +
 +2014-07-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * frame.c (x_set_frame_parameters): Don't use uninitialized locals.
 +
 +2014-07-27  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (applicationDidFinishLaunching antialiasThresholdDidChange):
 +      Reinstate code removed by the prevoius commit to this file.
 +
 +2014-07-27  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * buffer.h (struct buffer): New fields scroll_bar_height and
 +      horizontal_scroll_bar_type.
 +      * buffer.c (bset_scroll_bar_height)
 +      (bset_horizontal_scroll_bar_type): New functions.
 +      (Fbuffer_swap_text): Handle old_pointm field.
 +      (init_buffer_once): Set defaults for scroll_bar_height and
 +      horizontal_scroll_bar_type.
 +      (syms_of_buffer): New variables scroll_bar_height and
 +      horizontal_scroll_bar_type.
 +      * dispextern.h (window_part): Rename ON_SCROLL_BAR to
 +      ON_VERTICAL_SCROLL_BAR.  Add ON_HORIZONTAL_SCROLL_BAR.
 +      (set_vertical_scroll_bar): Remove prototype.
 +      (x_change_tool_bar_height): Add prototype.
 +      * dispnew.c (adjust_frame_glyphs_for_frame_redisplay)
 +      (window_to_frame_vpos, update_frame_1, scrolling, init_display):
 +      Use FRAME_TOTAL_COLS and FRAME_TOTAL_LINES instead of FRAME_COLS
 +      and FRAME_LINES.
 +      (adjust_frame_glyphs_for_window_redisplay): Rearrange lines.
 +      (update_window): Start mode_line_row->y after horizontal scroll
 +      bar.
 +      (change_frame_size_1): Call adjust_frame_size.
 +      (init_display): When changing the size of a tty frame do not
 +      pass height of menu bar.
 +      (Qframe_windows_min_size): New symbol.
 +      * frame.h (struct frame): List tool bar fields after menu bar
 +      fields.  Add official, total_lines, horizontal_scroll_bars,
 +      config_scroll_bar_height and config_scroll_bar_lines fields.
 +      (FRAME_HAS_HORIZONTAL_SCROLL_BARS)
 +      (FRAME_CONFIG_SCROLL_BAR_HEIGHT, FRAME_CONFIG_SCROLL_BAR_LINES)
 +      (FRAME_SCROLL_BAR_AREA_HEIGHT, FRAME_SCROLL_BAR_COLS)
 +      (FRAME_SCROLL_BAR_LINES, FRAME_TOTAL_LINES, SET_FRAME_LINES)
 +      (FRAME_WINDOWS_HEIGHT): New macros.
 +      (SET_FRAME_HEIGHT, FRAME_TEXT_LINES_TO_PIXEL_HEIGHT)
 +      (FRAME_PIXEL_Y_TO_LINE, FRAME_PIXEL_HEIGHT_TO_TEXT_LINES)
 +      (FRAME_TEXT_TO_PIXEL_HEIGHT): Separately count top margin and
 +      horizontal scroll bar.
 +      (frame_inhibit_resize, adjust_frame_size)
 +      (frame_windows_min_size): Add declarations.
 +      (Qscroll_bar_height, Qhorizontal_scroll_bars)
 +      (x_set_scroll_bar_default_height, x_set_left_fringe)
 +      (x_set_right_fringe, x_set_vertical_scroll_bars)
 +      (x_set_horizontal_scroll_bars, x_set_scroll_bar_width)
 +      (x_set_scroll_bar_height): Add external declarations.
 +      * frame.c: (frame_inhibit_resize, frame_windows_min_size)
 +      (adjust_frame_size): New functions.
 +      (make_frame): Initial horizontal_scroll_bars field.
 +      Use SET_FRAME_LINES.  Don't allow horizontal scroll bar in
 +      minibuffer window.
 +      (make_initial_frame, make_terminal_frame): No horizontal scroll
 +      bar in initial and terminal frames.  Use adjust_frame_size.
 +      (Fframe_total_cols): Fix doc-string.
 +      (Fframe_total_lines, Fscroll_bar_height): New Lisp functions.
 +      (Fset_frame_height, Fset_frame_width, Fset_frame_size):
 +      Rewrite using adjust_frame_size.
 +      (Qscroll_bar_height, Qhorizontal_scroll_bars)
 +      (Qframe_windows_min_size): New symbols.
 +      (x_set_frame_parameters): Remove call of check_frame_size.
 +      (x_report_frame_params): Return scroll_bar_height value.
 +      (x_set_left_fringe, x_set_right_fringe): New functions.
 +      (adjust_frame_height, x_set_internal_border_width)
 +      (x_set_fringe_width): Remove.
 +      (x_set_internal_border_width, x_set_vertical_scroll_bars)
 +      (x_set_scroll_bar_width, x_set_right_divider_width)
 +      (x_set_bottom_divider_width): Rewrite using adjust_frame_size.
 +      (x_set_horizontal_scroll_bars, x_set_scroll_bar_height):
 +      New functions.
 +      (x_figure_window_size): Rewrite to make frame display the
 +      expected number of lines.
 +      (Vdefault_frame_scroll_bars): Rewrite doc-string.
 +      (Vdefault_frame_horizontal_scroll_bars)
 +      (Vframe_initial_frame_tool_bar_height)
 +      (frame_inhibit_implied_resize): New variables.
 +      * fringe.c (compute_fringe_widths): Remove.
 +      * gtkutil.h (YG_SB_MIN, YG_SB_MAX, YG_SB_RANGE): Define.
 +      (xg_create_horizontal_scroll_bar)
 +      (xg_update_horizontal_scrollbar_pos)
 +      (xg_set_toolkit_horizontal_scroll_bar_thumb)
 +      (xg_get_default_scrollbar_height)
 +      (xg_clear_under_internal_border): Extern.
 +      * gtkutil.c (xg_frame_resized): Don't call
 +      do_pending_window_change.
 +      (xg_frame_set_char_size): Use adjust_frame_size.
 +      (style_changed_cb): Call update_theme_scrollbar_height and
 +      x_set_scroll_bar_default_height.
 +      (x_wm_set_size_hint): Don't call check_frame_size.
 +      (update_theme_scrollbar_height)
 +      (xg_get_default_scrollbar_height)
 +      (xg_create_horizontal_scroll_bar)
 +      (xg_update_horizontal_scrollbar_pos)
 +      (xg_set_toolkit_horizontal_scroll_bar_thumb): New functions.
 +      (xg_create_scroll_bar): Set horizontal slot of bar.
 +      (xg_initialize): Call update_theme_scrollbar_height.
 +      (xg_clear_under_internal_border): No more static.
 +      * insdel.c (adjust_suspend_auto_hscroll): New function.
 +      (adjust_markers_for_delete, adjust_markers_for_insert)
 +      (adjust_markers_for_replace): Call adjust_suspend_auto_hscroll.
 +      * keyboard.c (readable_events, discard_mouse_events)
 +      (make_lispy_event): Handle horizontal scroll bar click events.
 +      (Fsuspend_emacs): When changing the size of a tty frame do not
 +      pass height of menu bar.
 +      (Qbefore_handle, Qhorizontal_handle, Qafter_handle, Qleft)
 +      (Qright, Qleftmost, Qrightmost): New symbols.
 +      * menu.c (Fx_popup_dialog): Use FRAME_TOTAL_LINES instead of
 +      FRAME_LINES.
 +      * minibuf.c (read_minibuf): Initialize suspend_auto_hscroll.
 +      * nsfns.m (x_set_internal_border_width): New function.
 +      * nsterm.m (ns_draw_fringe_bitmap, ns_set_vertical_scroll_bar):
 +      Remove extended fringe code.
 +      (x_set_window_size, x_new_font): Don't call
 +      compute_fringe_widths.
 +      * term.c (Fresume_tty): When changing the size of a tty frame do
 +      not pass height of menu bar.
 +      (clear_tty_hooks, set_tty_hooks):
 +      Clear horizontal_scroll_bar_hook.
 +      (init_tty): Frame has no horizontal scroll bars.
 +      * termhooks.h (enum scroll_bar_part): Add scroll_bar_move_ratio,
 +      scroll_bar_before_handle, scroll_bar_horizontal_handle,
 +      scroll_bar_after_handle, scroll_bar_left_arrow,
 +      scroll_bar_right_arrow, scroll_bar_to_leftmost and
 +      scroll_bar_to_rightmost entries.
 +      (enum event_kind): Add HORIZONTAL_SCROLL_BAR_CLICK_EVENT
 +      (struct terminal): Add set_horizontal_scroll_bar_hook.
 +      * w32console.c (initialize_w32_display):
 +      Clear horizontal_scroll_bar_hook.
 +      * w32fns.c (x_set_mouse_color): Use FRAME_W32_DISPLAY instead of
 +      FRAME_X_DISPLAY.
 +      (x_clear_under_internal_border, x_set_internal_border_width):
 +      New functions.
 +      (x_set_menu_bar_lines): Rewrite using frame_inhibit_resize.
 +      Set windows_or_buffers_changed when adding the menu bar.
 +      (x_set_tool_bar_lines): Rewrite using adjust_frame_size.
 +      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
 +      (w32_createhscrollbar): New functions.
 +      (w32_createscrollbar): Rename to w32_createvscrollbar.
 +      (w32_createwindow): Init WND_HSCROLLBAR_INDEX.
 +      (w32_name_of_message): Replace WM_EMACS_CREATESCROLLBAR by
 +      WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR.
 +      Add WM_EMACS_SHOWCURSOR.
 +      (w32_wnd_proc): Handle WM_HSCROLL case.  In WM_WINDOWPOSCHANGING
 +      case do not artificially impose WM size hints.
 +      Handle WM_EMACS_SHOWCURSOR case.  Replace WM_EMACS_CREATESCROLLBAR case
 +      by WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR
 +      cases.
 +      (my_create_tip_window): Replace WND_SCROLLBAR_INDEX by
 +      WND_VSCROLLBAR_INDEX and WND_HSCROLLBAR_INDEX.
 +      (unwind_create_frame_1): Remove.
 +      (Fx_create_frame): Make both scrollbars the system standard
 +      width and height.  Use official field of frame structure to
 +      inhibit running window-configuration-change-hook.
 +      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
 +      pixelwise.  Handle frame's official field.
 +      (w32_frame_parm_handlers): Remove x_set_fringe_width
 +      entries. Add x_set_scroll_bar_height,
 +      x_set_horizontal_scroll_bars, x_set_left_fringe and
 +      x_set_right_fringe.
 +      * w32inevt.c (resize_event, maybe_generate_resize_event): Do not
 +      pass height of menu bar to change_frame_size.
 +      * w32menu.c (set_frame_menubar): Rewrite using
 +      frame_inhibit_resize.
 +      * w32term.h (struct w32_display_info):
 +      Add horizontal_scroll_bar_cursor and cursor_display_counter.
 +      (struct scroll_bar): Add horizontal.
 +      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
 +      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
 +      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH)
 +      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): New macros.
 +      (WM_EMACS_CREATEVSCROLLBAR, WM_EMACS_CREATEHSCROLLBAR):
 +      Define instead of WM_EMACS_CREATESCROLLBAR.
 +      (WND_VSCROLLBAR_INDEX, WND_HSCROLLBAR_INDEX): Define instead of
 +      WND_SCROLLBAR_INDEX.
 +      * w32term.c (horizontal_scroll_bar_min_handle)
 +      (horizontal_scroll_bar_left_border)
 +      (horizontal_scroll_bar_right_border): New integers.
 +      (x_set_frame_alpha): Replace x_highlight_frame by
 +      w32_focus_frame.
 +      (x_window_to_scroll_bar): New argument "type".  Update callers
 +      accordingly.
 +      (w32_set_horizontal_scroll_bar_thumb)
 +      (x_horizontal_scroll_bar_report_motion)
 +      (w32_set_horizontal_scroll_bar)
 +      (w32_horizontal_scroll_bar_handle_click)
 +      (x_horizontal_scroll_bar_report_motion): New functions.
 +      (w32_mouse_position): Discriminate horizontal and vertical
 +      scrollbar cases.
 +      (my_create_scrollbar): Replace with two new functions
 +      my_create_vscrollbar and my_create_hscrollbar.
 +      (x_scroll_bar_create): New argument "horizontal".
 +      Update callers accordingly.
 +      (x_scroll_bar_remove, w32_condemn_scroll_bars)
 +      (w32_redeem_scroll_bar, x_scroll_bar_clear): Handle horizontal
 +      scroll bar case.
 +      (w32_read_socket): Handle WM_HSCROLL cae.
 +      (x_new_font): Don't recompute fringe widths.
 +      Use frame_inhibit_resize.  Calculate new menu bar height iff we
 +      build without toolkit.  Always clear under internal border.
 +      (x_set_window_size): Don't check frame size or recompute
 +      fringes.  Reset fullscreen status before applying sizes.
 +      Always resize as requested by pixelwise argument.  Don't call
 +      do_pending_window_change.
 +      (x_wm_set_size_hint): Add call for FRAME_SCROLL_BAR_AREA_HEIGHT.
 +      (w32_initialize_display_info): Initialize dpyinfo's
 +      horizontal_scroll_bar_cursor entry.
 +      (w32_create_terminal): Add set_horizontal_scroll_bar_hook.
 +      (w32_initialize): Init horizontal_scroll_bar_min_handle and
 +      horizontal_scroll_bar_left_border.
 +      (w32fullscreen_hook): Intermittently resize window to normal
 +      when switching from fullscreen to maximized state.
 +      (run_window_configuration_change_hook): Don't run it if frame is
 +      not official yet.
 +      (unwind_change_frame): Remove.
 +      (Fset_window_configuration): Rewrite using frame's official field.
 +      * widget.c (set_frame_size): Don't call compute_fringe_widths.
 +      (EmacsFrameSetCharSize): Obey frame_inhibit_resize.
 +      * window.h (struct window): New fields old_pointm,
 +      horizontal_scroll_bar, horizontal_scroll_bar_type, hscroll_whole,
 +      scroll_bar_height and suspend_auto_hscroll.
 +      (wset_horizontal_scroll_bar, wset_horizontal_scroll_bar_type):
 +      New functions.
 +      (sanitize_window_sizes): Extern.
 +      (MINI_NON_ONLY_WINDOW_P, MINI_ONLY_WINDOW_P, WINDOW_PSEUDO_P)
 +      (WINDOW_TOPMOST_P, WINDOW_HAS_HORIZONTAL_SCROLL_BAR)
 +      (WINDOW_CONFIG_SCROLL_BAR_HEIGHT)
 +      (WINDOW_CONFIG_SCROLL_BAR_LINES)
 +      (WINDOW_SCROLL_BAR_LINES, WINDOW_SCROLL_BAR_AREA_HEIGHT):
 +      New macros.
 +      (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS)
 +      (WINDOW_FRINGE_COLS, WINDOW_FRINGE_EXTENDED_P): Remove macros.
 +      (WINDOW_VERTICAL_SCROLL_BAR_TYPE)
 +      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT)
 +      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT)
 +      (WINDOW_HAS_VERTICAL_SCROLL_BAR): Minor rewrite.
 +      (WINDOW_BOX_HEIGHT_NO_MODE_LINE, WINDOW_BOX_TEXT_HEIGHT)
 +      (WINDOW_SCROLL_BAR_AREA_Y): Count in scroll bar height.
 +      * window.c (wset_old_pointm, Fwindow_scroll_bar_height)
 +      (Fwindow_old_point, sanitize_window_sizes): New functions.
 +      (Qwindow_sanitize_window_sizes): New symbol.
 +      (window_body_height): Count in horizontal scroll bar.
 +      (set_window_hscroll, Fscroll_left, Fscroll_right):
 +      Set suspend_auto_hscroll slot.
 +      (Fwindow_inside_edges): Count fringes pixelwise.
 +      (coordinates_in_window, Fcoordinates_in_window_p):
 +      Consider horizontal scroll bar.
 +      (check_frame_size, adjust_window_margins): Remove functions and
 +      corresponding calls.
 +      (set_window_buffer): Initialize old_pointm and horizontal scroll bars.
 +      (temp_output_buffer_show): Reset hscroll related fields.
 +      Initialize old_pointm.
 +      (make_parent_window): Initialize old_pointm.
 +      (make_window): Initialize old_pointm, horizontal scroll bar type,
 +      and scroll bar height.
 +      (resize_frame_windows): Don't count top margin in new sizes.
 +      Don't use safe sizes when shrinking a frame; let the window
 +      manager do the clipping.
 +      (Fsplit_window_internal): Inherit horizontal scroll bar type and
 +      height.
 +      (Fdelete_window_internal): Unchain old_pointm marker.
 +      (window_scroll_pixel_based, Fscroll_other_window):
 +      Adjust old_pointm.
 +      (Fwindow_text_width, Fwindow_text_height): New argument
 +      "pixelwise".
 +      (struct saved_window): New fields, old_pointm, hscroll_whole,
 +      suspend_auto_hscroll, scroll_bar_height and
 +      horizontal_scroll_bar_type.
 +      (Fset_window_configuration, save_window_save): Set new fields of
 +      saved_window.
 +      (apply_window_adjustment): Don't call adjust_window_margins.
 +      (set_window_margins): Don't change margins if new sizes don't
 +      fit into window.
 +      (set_window_scroll_bars): New argument "horizontal_type".
 +      Handle horizontal scroll bars.  Don't change scroll bars if they
 +      don't fit into window.
 +      (Fset_window_scroll_bars): New argument "horizontal_type".
 +      (Fwindow_scroll_bars): Return values for horizontal scroll bars.
 +      (compare_window_configurations): Compare horizontal scroll bar
 +      settings.
 +      * xdisp.c (window_text_bottom_y, window_box_height): Count in
 +      horizontal scroll bar height.
 +      (pixel_to_glyph_coords, init_xdisp): Use FRAME_TOTAL_LINES
 +      instead of FRAME_LINES.
 +      (remember_mouse_glyph): Case ON_SCROLL_BAR changed to
 +      ON_VERTICAL_SCROLL_BAR.
 +      (with_echo_area_buffer): Initialize old_pointm.
 +      (with_echo_area_buffer_unwind_data): Store old_pointm values in
 +      vector.
 +      (unwind_with_echo_area_buffer): Handle old_pointm.
 +      (update_tool_bar): Set do_update when the tool bar window has at
 +      least one line (since this is what the user sets).
 +      (MAX_FRAME_TOOL_BAR_HEIGHT): Remove macro.
 +      (redisplay_tool_bar): Return early when toolbar has zero lines.
 +      Call x_change_tool_bar_height.  Don't use max_tool_bar_height.
 +      (hscroll_window_tree): Handle suspension of auto_hscroll and
 +      old_pointm.
 +      (set_horizontal_scroll_bar): New function.
 +      (redisplay_window): Set ignore_mouse_drag_p when tool bar has
 +      more than one line.  Handle horizontal scroll bars.
 +      (note_mouse_highlight): Handle horizontal scrol bars.
 +      (expose_frame): Set dimensions of XRectangle from frame's text
 +      sizes.
 +      (Vvoid_text_area_pointer): Update doc-string.
 +      * xfns.c (x_set_menu_bar_lines): Use adjust_frame_size.
 +      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
 +      (x_set_internal_border_width): New functions.
 +      (x_set_tool_bar_lines): Call x_change_tool_bar_height.
 +      (unwind_create_frame_1): Remove.
 +      (Fx_create_frame): Handle horizontal scroll bars.  Use official
 +      field of frame structure to inhibit running
 +      window-configuration-change-hook.
 +      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
 +      pixelwise.  Handle frame's official field.
 +      (x_frame_parm_handlers): Add x_set_scroll_bar_height,
 +      x_set_horizontal_scroll_bars, x_set_left_fringe,
 +      x_set_right_fringe.
 +      * xmenu.c (update_frame_menubar, free_frame_menubar):
 +      Use adjust_frame_size.
 +      * xterm.h (struct x_display_info):
 +      Add horizontal_scroll_bar_cursor and Xatom_Horizontal_Scrollbar
 +      slots.
 +      (struct scroll_bar): Add horizontal slot.
 +      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
 +      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
 +      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH): New macros.
 +      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
 +      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): Define.
 +      (x_clear_under_internal_border): Remove.
 +      * xterm.c (XTmouse_position): Handle horizontal scroll bars.
 +      (x_window_to_scroll_bar): New argument TYPE.  Update callers.
 +      (x_send_scroll_bar_event, x_scroll_bar_create): New arguments
 +      HORIZONTAL.  Update callers.
 +      (horizontal_action_hook_id): New action hook id.
 +      (x_horizontal_scroll_bar_to_input_event)
 +      (x_create_horizontal_toolkit_scroll_bar)
 +      (xt_horizontal_action_hook)
 +      (x_set_toolkit_horizontal_scroll_bar_thumb)
 +      (XTset_horizontal_scroll_bar, x_net_wm_state)
 +      (x_horizontal_scroll_bar_report_motion): New functions.
 +      (xg_scroll_callback, x_scroll_bar_handle_click):
 +      Handle horizontal scroll bars.
 +      (SCROLL_BAR_HORIZONTAL_NAME): Define.
 +      (XTset_vertical_scroll_bar): Attempt to clear areas not covered
 +      by scroll bar.
 +      (XTcondemn_scroll_bars, XTredeem_scroll_bar): Rewrite.
 +      Handle horizontal scroll bars.
 +      (handle_one_xevent): Handle horizontal scroll bar events.
 +      Call x_net_wm_state.
 +      (x_set_window_size_1, x_wm_set_size_hint): Don't call
 +      check_frame_size.
 +      (x_set_window_size): Don't call check_frame_size and
 +      do_pending_window_change.
 +      (x_term_init): Init horizontal_scroll_bar_cursor display info.
 +      (x_create_terminal): Add set_horizontal_scroll_bar_hook.
 +      (x_scroll_bar_set_handle): Add some checks when calling
 +      x_clear_area.
 +
 +2014-07-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Revert previous change.
 +      There is certainly nothing wrong with writing code like 'lo <= i
 +      && i <= hi', even if LO happens to a constant.  There isn't even
 +      anything wrong in general with writing 'a <= b' if A happens to
 +      be a constant.  At any rate stylistic changes shouldn't
 +      be done like this without discussion.
 +
 +2014-07-26  Andreas Schwab  <schwab@linux-m68k.org>
 +
 +      * alloc.c (xnmalloc, xnrealloc, xpalloc, make_save_value)
 +      (Fgarbage_collect): Reorder conditions that are written backwards.
 +      * data.c (cons_to_unsigned): Likewise.
 +      * dispnew.c (update_frame_1, sit_for): Likewise.
 +      * fileio.c (file_offset): Likewise.
 +      * filelock.c (read_lock_data, lock_file): Likewise.
 +      * fns.c (larger_vector, make_hash_table, Fmake_hash_table):
 +      Likewise.
 +      * font.c (font_intern_prop, font_style_symbolic): Likewise.
 +      * lisp.h (FIXNUM_OVERFLOW_P): Likewise.
 +      * lread.c (read1): Likewise.
 +      * minibuf.c (read_minibuf_noninteractive): Likewise.
 +      * nsterm.m (x_set_frame_alpha): Likewise.
 +      * process.c (wait_reading_process_output): Likewise.
 +      * region-cache.c (delete_cache_boundaries): Likewise.
 +      * xterm.c (x_set_frame_alpha): Likewise.
 +
 +2014-07-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * dispextern.h, xdisp.c (hourglass_shown_p, hourglass_atimer):
 +      Now static.
 +
 +2014-07-26  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * atimer.c (set_alarm) [HAVE_ITIMERSPEC]: Use TIMER_ABSTIME
 +      because atimer expiration is absolute rather than relative.
 +
 +2014-07-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32term.h (current_popup_menu, menubar_in_use):
 +      Move declarations from w32term.c.
 +
 +2014-07-25  Martin Rudalics  <rudalics@gmx.at>
 +
 +      * w32fns.c (menubar_in_use): No more static.
 +      * w32term.c (current_popup_menu, menubar_in_use): Declare.
 +
 +2014-07-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Move hourglass machinery to RIF.
 +      * dispextern.h (struct redisplay_interface): New members
 +      show_hourglass and hide_hourglass.  Indent comments.
 +      (show_hourglass, hide_hourglass): Remove prototypes.
 +      * nsterm.m (show_hourgass, hide_hourglass): Refactor to ...
 +      (ns_show_hourglass, ns_hide_hourglass): ... new no-ops.
 +      (ns_redisplay_interface): Add them.
 +      * w32fns.c (show_hourglass, hide_hourglass): Refactor to ...
 +      * w32term.c (w32_show_hourglass, w32_hide_hourglass): ... these.
 +      (w32_arrow_cursor): New function to hack around non-GUI frames.
 +      (w32_redisplay_interface): Add new functions.
 +      * w32term.h (w32_arror_cursor): Add prototype.
 +      * xdisp.c (show_hourglass): New function, refactored out from
 +      platform-dependent code.
 +      (cancel_hourglass): Now call to RIF function.
 +      * xfns.c (show_hourglass, hide_hourglass): Refactor to ...
 +      * xterm.c (x_show_hourglass, x_hide_hourglass): ... these.
 +      (x_redisplay_interface): Add new functions.
 +
 +2014-07-24  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Fix error reported by Angelo Graziosi <angelo.graziosi@alice.it> in
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00274.html>
 +      and complete previous change.
 +      * frame.c (adjust_frame_height): New function.
 +      (Fset_frame_height, Fset_frame_size): Use it.
 +      (x_set_frame_parameters): Take frame top margin into account.
 +
 +2014-07-23  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.c (Fset_frame_height): Take frame top margin into account.
 +      Incorrect behavior was reported by Martin Rudalics <rudalics@gmx.at> in
 +      <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00258.html>
 +
 +2014-07-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xterm.h (struct x_output) [USE_X_TOOLKIT || USE_GTK]: Define
 +      menubar_height as such.  Tweak comment.
 +      [USE_LUCID && USE_TOOLKIT_SCROLL_BARS]: Likewise for
 +      scroll_bar_top_shadow_pixel and scroll_bar_bottom_shadow_pixel.
 +      All related users changed.
 +      (FRAME_MENUBAR_HEIGHT) [!USE_X_TOOLKIT && !USE_GTK]: No-op.
 +      * xterm.c (handle_one_xevent):
 +      * gtkutil.c (xg_event_is_for_menubar):
 +      * xfns.c (x_window) [USE_X_TOOLKIT]:
 +      * xmenu.c (set_frame_menubar, free_frame_menubar):
 +      Prefer to use FRAME_MENUBAR_HEIGHT.
 +
 +2014-07-21  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.c (Fframe_parameters): Always report frame height without
 +      menu and tool bar lines.
 +
 +2014-07-21  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsterm.m (applicationDidFinishLaunching:): Call
        antialiasThresholdDidChange, register for antialias changes (Bug#17534).
  
        * macfont.h (macfont_update_antialias_threshold): Declare.
  
 -2014-07-17  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-21  Eli Zaretskii  <eliz@gnu.org>
  
        * w32select.c (setup_windows_coding_system):
        Apply CODING_ANNOTATION_MASK to the common_flags member of struct
        row has zero buffer position as their start position.
        Reported by martin rudalics <rudalics@gmx.at>.
  
 -2014-07-16  Eli Zaretskii  <eliz@gnu.org>
 -
        * xdisp.c (move_it_vertically_backward, move_it_by_lines): Prevent
        infinite looping in redisplay when display lines don't have enough
        space to display even a single character.  (Bug#18036)
  
 -2014-07-13  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-20  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.h (struct frame) [USE_X_TOOLKIT]: New member shell_position.
 +      * xfns.c (x_window): Use it to allow xfree later.
 +      (x_encode_text): Drop 3rd arg; unused.  Tweak comment and adjust users
 +      where appropriate.  Use bool for booleans and remove redundant checks.
 +      (Fx_backspace_delete_keys_p): Use XkbFreeKeyboard; explain why.
 +      * xterm.c (x_free_frame_resources): Free shell_position.
 +
 +2014-07-19  K. Handa  <handa@gnu.org>
 +
 +      * xfaces.c (realize_x_face): Call font_load_for_lface with no
 +      mandatory font spec (Bug#17973).
 +
 +2014-07-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * font.c (font_score): Return the worst score if the size of
 +      ENTITY is wrong by more than a factor 2 (Bug#17973).
 +
 +2014-07-18  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * frame.c (frame_unspecified_color): New function
 +      refactored out from ...
 +      (Fframe_parameters, Fframe_parameter): ... adjusted users.
 +      (x_fullscreen_adjust, set_frame_param): Move Windows-specific
 +      function to ...
 +      * w32term.c (x_fullscreen_adjust, set_frame_param): ... static here.
 +      * frame.h (x_fullscreen_adjust) [HAVE_NTGUI]:
 +      * lisp.h (set_frame_param): Remove prototype.
 +      * xterm.c (x_display_pixel_width, x_display_pixel_height): Now ...
 +      * xterm.h (x_display_pixel_width, x_display_pixel_height): ...
 +      inlined from here.
 +
 +      Prefer 'x_display_info *' to 'Display *' in X selection code.
 +      This helps to avoid unneeded calls to x_display_info_for_display.
 +      * xterm.h (struct selection_input_event): Record 'x_display_info *'
 +      instead of 'Display *'.
 +      (SELECTION_EVENT_DPYINFO): New macro.
 +      (SELECTION_EVENT_DISPLAY): Now inline function to prohibit using
 +      it as an lvalue.  Mention this in comment.
 +      * xterm.c (handle_one_xevent): Use SELECTION_EVENT_DPYINFO.
 +      * xselect.c (x_get_window_property_as_lisp_data, x_atom_to_symbol)
 +      (selection_data_to_lisp_data, receive_incremental_selection):
 +      Convert to use 'x_display_info *'.  Adjust users where appropriate.
 +      (lisp_data_to_selection_data): Likewise.  Also pass 'struct
 +      selection data *' as last arg to not return values in args.
 +      (unexpect_property_change): Use common removal technique.
 +
 +2014-07-17  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * print.c (print_preprocess): Adjust to match changed
 +      sub char-table structure and avoid crash (Bug#18038).
 +
 +      * data.c (wrong_choice): Not static any more.
 +      * lisp.h (wrong_choice): Add prototype.
 +      * frame.h (struct frame) [USE_X_TOOLKIT || HAVE_NTGUI]:
 +      Declare namebuf as such.  Tweak comment.
 +      [USE_GTK]: Likewise for tool_bar_position.
 +      (fset_tool_bar_position) [USE_GTK]: Ditto.
 +      (FRAME_TOOL_BAR_POSITION): New macro.
 +      * frame.c (x_report_frame_params):
 +      * gtkutil.c (update_frame_tool_bar):
 +      * xfns.c (Fx_create_frame): Use it.
 +      (x_set_tool_bar_position): Add meaningful diagnostic messages.
 +
 +2014-07-16  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (decode_mode_spec): Call file-remote-p on the current
        buffer's default-directory only if it is a string.  (Bug#17986)
  
 +2014-07-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      More precise control over values of some buffer-local variables.
 +      * keyboard.c (Qvertical_scroll_bar):
 +      * frame.c (Qleft, Qright): Move to ...
 +      * buffer.c (Qleft, Qright, Qvertical_scroll_bar): ... here.
 +      * buffer.c (Qchoice, Qrange, Qoverwrite_mode, Qfraction): New symbols.
 +      (syms_of_buffer): DEFSYM all of the above, attach special properties.
 +      Use special symbols to DEFVAR_PER_BUFFER overwrite-mode,
 +      vertical-scroll-bar, scroll-up-aggressively
 +      and scroll-down-aggressively.
 +      * buffer.h (Qchoice, Qrange, Qleft, Qright, Qvertical_scroll_bar):
 +      Add declarations.
 +      * nsfns.m, frame.h (Qleft, Qright):
 +      * nsterm.m (Qleft): Remove declarations.
 +      * gtkutil.c (toplevel): Include buffer.h.
 +      * data.c (wrong_choice, wrong_range): New functions.
 +      (store_symval_forwarding): Handle special properties of buffer-local
 +      variables and use functions from the above to signal error, if any.
 +
 +      * frame.h (enum fullscreen_type) [HAVE_WINDOW_SYSTEM]: Use more natural
 +      values.  Add comment.
 +      (struct frame): Re-arrange layout to avoid extra padding and use bit
 +      fields for output_method, want_fullscreen and vertical_scroll_bar_type.
 +      (FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS)
 +      (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT)
 +      (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT) [!HAVE_WINDOW_SYSTEM]:
 +      Define as no-ops because there are no scroll bars anyway.
 +      * frame.c (make_frame, make_terminal_frame, make_initial_frame):
 +      Adjust users.
 +
 +      * font.c (fset_font_data) [HAVE_XFT || HAVE_FREETYPE]:
 +      Add convenient setter.
 +      (font_put_frame_data, font_get_frame_data): Use it.
 +
 +2014-07-15  Daiki Ueno  <ueno@gnu.org>
 +
 +      * nsgui.h (XCHAR2B_BYTE1): Add missing parentheses around
 +      pointer argument, before dereferencing.
 +      (XCHAR2B_BYTE2): Likewise.
 +
 +2014-07-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xmenu.c (toplevel): Use LWLIB_ID for next_menubar_widget_id.
 +      (pop_down_menu) [USE_X_TOOLKIT]: Accept integer arg.
 +      (create_and_show_popup_menu, create_and_show_dialog) [USE_X_TOOLKIT]:
 +      Use record_unwind_protect_int and avoid consing.
 +      (syms_of_xmenu) [USE_X_TOOLKIT]: Declare WIDGET_ID_TICK_START.
 +
 +      * regex.c (re_search_2): Use ssize_t to avoid integer overflow.
 +
 +2014-07-14  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use binary-io module, O_BINARY, and "b" flag (Bug#18006).
 +      * callproc.c (create_temp_file): Use mkostemp's O_BINARY flag.
 +      * emacs.c [MSDOS]:
 +      * emacs.c (main) [DOS_NT]: Don't mess with _fmode.
 +      (main) [MSDOS]: Use SET_BINARY instead of setmode.
 +      * minibuf.c: Include binary-io.h instead of fcntl.h.
 +      (read_minibuf_noninteractive):
 +      Use set_binary_mode instead of handcrafted code.
 +      Don't call emacs_set_tty if emacs_get_tty failed.
 +      * sysdep.c, systty.h (emacs_get_tty): Return int, not void.
 +      * sysdep.c (emacs_open, emacs_pipe): Use O_BINARY.
 +      * w32.c (pipe2): Adjust eassert to include O_BINARY.
 +
 +      * macros.c (Fstart_kbd_macro): Avoid need for overflow check.
 +      This works around a GCC compiler bug when Emacs is configured with
 +      --enable-gcc-warnings.
 +
 +2014-07-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * lisp.h (CHECK_VECTOR_OR_STRING): Return number of elements
 +      or characters in string, respectively.  Add comment.
 +      * fringe.c (Fdefine_fringe_bitmap):
 +      * fns.c (Fsubstring, substring_both): Use it.
 +      * keymap.c (Fdefine_key, Flookup_key):
 +      * macros.c (Fstart_kbd_macro): Likewise.  Avoid call to Flength.
 +
 +      * term.c (tty_menu_add_pane, tty_menu_add_selection):
 +      Use menu_item_width.
 +      (tty_menu_show): Simplify because tty_menu_create never return NULL.
 +
 +2014-07-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve behavior of 'bzr up; cd src; make -k'.
 +      * Makefile.in (top_srcdir): New var.
 +      (ntsource, lispsource, ALL_CFLAGS, gl-stamp, emacs.res):
 +      Use '$(top_srcdir)' instead of '$(srcdir)/..';
 +      its expansion is a bit shorter.
 +      (../config.status): Actually build config.status instead of
 +      just complaining.
 +      (ACLOCAL_INPUTS, AUTOCONF_INPUTS):
 +      New macros, copied and relocated from ../Makefile.in.
 +      ($(top_srcdir)/aclocal.m4, $(top_srcdir)/configure, config.in)
 +      (../config.status, Makefile): New dependencies and rules,
 +      copied with relocation from ../Makefile.in.  This should be more
 +      likely to rebuild the build machinery properly if you do a 'make'
 +      in the src directory.
 +
  2014-07-12  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (display_line): Don't call FETCH_BYTE with argument less
        * xfns.c (Fx_file_dialog) [USE_MOTIF, USE_GTK]: Update the doc
        string to match the one in w32fns.c.
  
 -2014-07-08  Eli Zaretskii  <eliz@gnu.org>
 +      * minibuf.c (read_minibuf_noninteractive) [WINDOWSNT]: Switch
 +      stdin to binary mode only if it is connected to a terminal.
 +
 +2014-07-11  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Coalesce extern decls.
 +      * minibuf.c (emacs_get_tty, emacs_set_tty, suppress_echo_on_tty):
 +      * sysdep.c (emacs_get_tty, emacs_set_tty):
 +      Move duplicate extern decls from here ...
 +      * systty.h: ... to here, so that there's just one copy.
 +
 +2014-07-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (changeFont:): Add ifdef NS_IMPL_COCOA.
 +
 +      * nsfns.m (Fns_popup_font_panel): Ditto.
 +
 +2014-07-11  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * minibuf.c (read_minibuf_noninteractive): Finish reading on '\r',
 +      not only on '\n'.
 +      [WINDOWSNT]: Switch stdin to binary mode when not echoing input.
 +
 +      * sysdep.c (emacs_get_tty, emacs_set_tty, suppress_echo_on_tty)
 +      [DOS_NT]: Implement for WINDOWSNT.
 +
 +      * systty.h (struct emacs_tty) [DOS_NT]: The struct member is now
 +      unsigned.
 +
 +2014-07-11  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * sysdep.c (suppress_echo_on_tty): New function.
 +      * minibuf.c (read_minibuf_noninteractive): Use it.
 +
 +2014-07-11  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * alloc.c (Fmemory_info) [HAVE_LINUX_SYSINFO]: Return nil if
 +      sysinfo failed.  Adjust docstring.
 +
 +2014-07-11  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Implement memory-info for MS-DOS.
 +      * dosfns.c (dos_memory_info): New function.
 +      * dosfns.h (dos_memory_info): Add prototype.
 +      * alloc.c (Fmemory_info) [MSDOS]: Call dos_memory_info.
 +      * vm-limit.c (get_lim_data) [MSDOS]: Call dos_memory_info, instead
 +      of doing some of its job.
 +
 +      * minibuf.c (read_minibuf_noninteractive) [WINDOWSNT]: Don't
 +      reference termios structure members.
 +
 +2014-07-11  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * sysdep.c (emacs_get_tty, emacs_set_tty): Make them externally visible.
 +
 +      * minibuf.c (top): Include systty.h.  Declare external
 +      emacs_get_tty and emacs_set_tty.
 +      (Vread_hide_char): New lisp variable.
 +      (read_minibuf_noninteractive): Hide characters with
 +      Vread_hide_char if it is a character.  (Bug#17839)
 +
 +2014-07-10  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Implement memory-info for MS-Windows.
 +      * w32.c (w32_memory_info): New function.
 +      * w32.h (w32_memory_info): Prototype it.
 +      * alloc.c (Fmemory_info) [WINDOWSNT]: Call it.
 +
 +2014-07-10  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * coding.h (struct coding_system): Remove 'error_positions' (unused)
 +      and 'errors' (set but unused) fields.  Use bitfields for 'eol_seen',
 +      'mode', 'common_flags' and 'result' fields, adjust layout to avoid
 +      extra padding and shrink struct coding_system by 56 bytes (x86_64).
 +      * coding.c (decode_coding_utf_8, decode_coding_utf_16)
 +      (decode_coding_emacs_mule, decode_coding_iso_2022, decode_coding_sjis)
 +      (decode_coding_big5, decode_coding_charset, decode_coding)
 +      (encode_coding): Adjust users.
 +
 +      * alloc.c (Fmemory_info): New function.
 +
 +2014-07-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * syntax.c (back_comment): Use more-natural location for label.
 +
 +      * font.c, font.h (font_unparse_fcname): Now static.
 +      Define only if HAVE_XFT || HAVE_FREETYPE || HAVE_NS.
 +
 +2014-07-09  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Next minor cleanup of font subsystem.
 +      * font.h (enum font_property_index): Remove FONT_ENTITY_INDEX (no
 +      users) and FONT_FORMAT_INDEX (set by a few font drivers but never
 +      really used).
 +      (FONT_ENTITY_NOT_LOADABLE, FONT_ENTITY_SET_NOT_LOADABLE): Remove;
 +      unused.
 +      * ftfont.h (ftfont_font_format): Remove prototype.
 +      * ftfont.c (ftfont_font_format): Remove; now unused.
 +      (ftfont_open):
 +      * nsfont.m (nsfont_open):
 +      * w32font.c (w32font_open_internal):
 +      * w32uniscribe.c (uniscribe_open):
 +      * xfont.c (xfont_open):
 +      * xftfont.c (xftfont_open): All users changed.
 +
 +      * coding.c (ALLOC_CONVERSION_WORK_AREA): Prefer ptrdiff_t to int and
 +      so avoid integer overflow if decoded gap size exceeds INT_MAX bytes.
 +
 +2014-07-09  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (move_it_to): Adjust calculation of line_start_x to what
        x_produce_glyphs does when it generates a stretch glyph that
        represents a TAB.  (Bug#17969)
  
 -2014-07-05  Eli Zaretskii  <eliz@gnu.org>
 -
        * xdisp.c (pos_visible_p): If CHARPOS is at beginning of window,
        and there is a display property at that position, don't call
        move_it_to to move to a position before window start.  (Bug#17942)
        Fix condition for finding CHARPOS by the first call to move_it_to.
        (Bug#17944)
  
 -2014-07-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-07-09  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * syntax.c (find_defun_start): Try the cache even
        if !open_paren_in_column_0_is_defun_start.
        (back_comment): If find_defun_start was pessimistic, use the
        scan_sexps_forward result to improve the cache (bug#16526).
  
 -2014-07-04  Daniel Colascione  <dancol@dancol.org>
 -
 -      Backport from trunk.
 -      * xfns.c (create_frame_xic): Pass XNStatusAttributes to XCreateIC
 -      only if xic_style calls for it.  This change allows Emacs to work
 -      with ibus.  Also, don't leak resources if create_frame_xic fails,
 -      and stop caching xic_style across different displays (Bug#17928).
 -      (supported_xim_styles): Make const.
 -      (best_xim_style): Remove first parameter: it's always just
 -      supported_xim_styles.  Change to look at supported_xim_styles directly.
 -
 -2014-07-04  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-09  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (redisplay_window): If redisplay of a window ends up
        with point in a partially visible line at end of the window, make
        * w32.c (network_interface_info): Make sure the argument is a
        Lisp string.
  
 -2014-07-01  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * process.c (read_and_dispose_of_process_output): Fix typo
 +      in previous patch: we want nonnegative fds, not nonzero fds.
 +
 +2014-07-08  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * chartab.c (char_table_translate): Move to...
 +      * character.h (char_table_translate): ... inline function here.
 +      Avoid Faref and assume that args are always valid.  This helps to
 +      speedup search, which is especially important for a huge buffers.
 +      * lisp.h (char_table_translate): Remove prototype.
 +
 +      * nsfont.m (nsfont_close): Free glyphs and metrics arrays as well.
 +      * font.c (font_build_object) [HAVE_XFT || HAVE_FREETYPE || HAVE_NS]:
 +      New function, with an intention to avoid code duplication between
 +      a few font drivers.
 +      * font.h (font_build_object) [HAVE_XFT || HAVE_FREETYPE || HAVE_NS]:
 +      Add prototype.
 +      * ftfont.c (ftfont_open):
 +      * macfont.m (macfont_open):
 +      * xftfont.c (xftfont_open): Use it.
 +
 +2014-07-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * process.c: Add sanity checks for file descriptors (Bug#17844).
 +      (wait_reading_process_output, Fprocess_filter_multibyte_p):
 +      Check that infd is nonnegative before using it as an fd.
 +      (read_and_dispose_of_process_output, Fprocess_send_eof):
 +      Likewise, for outfd.
 +      (wait_reading_process_output): Omit unnecessary check of infd.
 +
 +2014-07-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Minor fixups related to usage of the 'long' type.
 +      * gnutls.c (emacs_gnutls_handshake):
 +      * xfaces.c (dump_realized_face):
 +      Work even if 'long' is narrower than 'void *'.
 +      * termcap.c (scan_file):
 +      * xselect.c (x_decline_selection_request)
 +      (x_reply_selection_request, x_get_window_property):
 +      * xterm.c (x_set_frame_alpha):
 +      Remove unnecessary 'L' suffixes of integer constants.
 +      * xfns.c (hack_wm_protocols):
 +      * xselect.c (x_fill_property_data):
 +      * xterm.c (x_set_offset, x_set_window_size_1, x_make_frame_invisible):
 +      Remove unnecessary casts to 'long'.
 +      (set_machine_and_pid_properties): Don't assume pid_t fits in 32 bits.
 +
 +      Minor ImageMagick safety fixes.
 +      * image.c (imagemagick_compute_animated_image):
 +      Remove useless assignment to local.  Avoid problems if dest_width is 0.
 +      (imagemagick_load_image): Use int for pixel counts that can't
 +      exceed INT_MAX.  Avoid problem if PixelGetNextIteratorRow returns
 +      a row width greater than the image width (or greater than LONG_MAX!).
 +
 +2014-07-04  K. Handa  <handa@gnu.org>
 +
 +      * coding.c (MIN_CHARBUF_SIZE): Delete it.
 +      (MAX_CHARBUF_EXTRA_SIZE): New macro.
 +      (ALLOC_CONVERSION_WORK_AREA): Use MAX_CHARBUF_EXTRA_SIZE.
 +
 +2014-07-04  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * font.h (struct font_driver): Remove get_outline and free_outline;
 +      not used by any font driver.
 +      * ftfont.c (ftfont_driver):
 +      * macfont.m (macfont_driver):
 +      * nsfont.m (nsfont_driver):
 +      * w32font.c (w32font_driver):
 +      * w32uniscribe.c (uniscribe_font_driver):
 +      * xfont.c (xfont_driver): Related users changed.
 +      * xselect.c (x_get_window_property): Use convenient xmalloc.
 +      Call to xfree only if some data was really allocated.
 +
 +2014-07-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      On MS-Windows, display busy cursor on all GUI frames.
 +      This is similar to what we have on X.  Quickly tested by Dani Moncayo.
 +      * w32fns.c (toplevel): Remove hourglass_hwnd; no longer used.
 +      (w32_show_hourglass, w32_hide_hourglass, w32_note_current_window):
 +      Likewise.
 +      (hide_hourglass, show_hourglass): Redesign to match X counterparts.
 +      * xdisp.c (start_hourglass): Remove Windows-specific bits.
 +
 +2014-07-03  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Use convenient alists to manage per-frame font driver-specific data.
 +      * frame.h (struct frame): Rename font_data_list to...
 +      [HAVE_XFT || HAVE_FREETYPE]: ... font_data, which is a Lisp_Object now.
 +      * font.h (struct font_data_list): Remove; no longer need a special
 +      data type.
 +      (font_put_frame_data, font_get_frame_data) [HAVE_XFT || HAVE_FREETYPE]:
 +      Adjust prototypes.
 +      * font.c (font_put_frame_data, font_get_frame_data)
 +      [HAVE_XFT || HAVE_FREETYPE]: Prefer alist functions to ad-hoc list
 +      management.
 +      * xftfont.c (xftfont_get_xft_draw, xftfont_end_for_frame):
 +      Related users changed.
 +      * ftxfont.c (ftxfont_get_gcs, ftxfont_end_for_frame): Likewise.
 +      Prefer convenient xmalloc and xfree.
 +
 +2014-07-03  Eli Zaretskii  <eliz@gnu.org>
  
        * dispnew.c (prepare_desired_row): Accept 2 additional arguments:
        the window whose glyph row is being prepared and a flag whether it
  
        * dispextern.h (prepare_desired_row): Adjust prototype.
  
 -2014-07-01  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-07-03  Dmitry Antipov  <dmantipov@yandex.ru>
  
        * xfaces.c (init_frame_faces): Always realize basic faces (Bug#17889).
        * menu.c (Fx_popup_dialog): Set Vmenu_updating_frame to avoid crash
        caused by xw_popup_dialog in daemon mode (Bug#17891).
  
 -2014-06-30  Eli Zaretskii  <eliz@gnu.org>
 +2014-07-03  Eli Zaretskii  <eliz@gnu.org>
  
        * frame.c (do_switch_frame): When switching to another TTY frame,
        make sure FrameCols and FrameRows are in sync with the new frame's
        data.  (Bug#17875)
  
 +2014-07-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Shrink Lisp_Sub_Char_Table by preferring C integers to Lisp_Objects.
 +      * lisp.h (struct Lisp_Sub_Char_Table): Use C integers for depth and
 +      min_char slots.  Adjust comment.
 +      (enum char_table_specials): Rename from CHAR_TABLE_STANDARD_SLOTS.
 +      Add SUB_CHAR_TABLE_OFFSET member.
 +      (make_uninit_sub_char_table): New function.
 +      (toplevel): Add compile-time assert to verify suitable member layout
 +      in Lisp_Sub_Char_Table.
 +      * alloc.c (mark_char_table): Add extra argument to denote char table
 +      subtype.  Adjust to match new layout of sub char-table.
 +      (mark_object): Always mark sub char-tables with mark_char_table.
 +      * chartab.c (make_sub_char_table, copy_sub_char_table)
 +      (sub_char_table_ref, sub_char_table_ref_and_range, sub_char_table_set)
 +      (sub_char_table_set_range, optimize_sub_char_table, map_sub_char_table)
 +      (map_sub_char_table_for_charset, uniprop_table_uncompress):
 +      All related users changed.
 +      * lread.c (read1): Adjust to match new layout of sub char-table.
 +      * print.c (print_object): Likewise (Bug#17898).
 +
 +2014-07-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keymap.c (get_keyelt): Simplify.
 +      (copy_keymap_item): Remove left-over code for when we had
 +      key-shortcut caches.
 +
 +2014-06-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (judge): EmacsScroller: Move dealloc code here.
 +      (dealloc): Remove for EmacsScroller.
 +
 +      * nsterm.h (EmacsScroller): Remove dealloc.
 +
 +2014-06-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * coding.c (MIN_CHARBUF_SIZE): Enlarge to 32.  (Bug#17881)
 +
 +2014-06-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO
 +      when setNeedsDisplay is called so we don't trigger redisplay for every
 +      tool bar update.
 +
 +      * nsterm.m (any_help_event_p): New variable.
 +      (mouseMoved:): Set any_help_event_p to YES if help event is
 +      generated.  Remove else with empty help event that triggered redisplay
 +      for every mouse move.
 +      (windowDidResignKey:): If any_help_event_p, generate empty help event.
 +
 +2014-06-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xfns.c (Qsuppress_icon): Remove; no real users.
 +      (syms_of_xfns): Don't DEFSYM it.  Remove ancient comments.
 +      * w32fns.c (Qsuppress_icon): Remove, for the same reason.
 +      (syms_of_w32fns): Don't DEFSYM it.
 +
 +2014-06-29  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (ns-app): Mark as PHONY.
 +
 +2014-06-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (mostlyclean): There are no libXMenu11.a,
 +      liblw.a in this directory.
 +
  2014-06-28  Andreas Schwab  <schwab@linux-m68k.org>
  
        * coding.c (encode_coding_utf_8): Correctly count produced_chars
        also in unibyte case.  (Bug#17865)
  
 -2014-06-25  Glenn Morris  <rgm@gnu.org>
 +2014-06-28  K. Handa  <handa@gnu.org>
  
 -      * puresize.h (BASE_PURESIZE): Increase a bit.  (Bug#17846)
 +      * coding.c (MAX_CHARBUF_SIZE): Rename from CHARBUF_SIZE.
 +      (MIN_CHARBUF_SIZE): New macro.
 +      (ALLOC_CONVERSION_WORK_AREA): New arg SIZE.  Callers changed.
 +
 +2014-06-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in: Replace BOOTSTRAPEMACS sleight-of-hand
 +      with an order-only dependence on bootstrap-emacs.  (Bug#2151)
 +      (.el.elc): Replace suffix rule with pattern rule.
 +      (%.elc): New pattern rule, with order-only prerequisite.
 +      ($(lisp)): No more need to depend on BOOTSTRAPEMACS.
 +      ($(lispsource)/loaddefs.el): Use an order-only prerequisite
 +      in place of BOOTSTRAPEMACS.
 +
 +2014-06-26  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fns.c (Fcompare_strings): Use FETCH_STRING_CHAR_AS_MULTIBYTE_ADVANCE.
 +
 +2014-06-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Consistently use validate_subarray to verify substring.
 +      * fns.c (validate_substring): Not static any more.  Adjust to
 +      use ptrdiff_t, not EMACS_INT, because string and vector limits
 +      can't exceed ptrdiff_t even if EMACS_INT is wider.
 +      (Fcompare_strings, Fsubstring, Fsubstring_no_properties)
 +      (secure_hash): Adjust user.
 +      * lisp.h (validate_subarray): Add prototype.
 +      * coding.c (Fundecodable_char_position):
 +      * composite.c (Fcomposition_get_gstring, Fcompose_string_internal):
 +      Use validate_subarray.  Adjust comment to mention substring.
 +
 +2014-06-25  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Do not allow out-of-range character position in Fcompare_strings.
 +      * fns.c (validate_subarray): Add prototype.
 +      (Fcompare_substring): Use validate_subarray to check ranges.
 +      Adjust comment to mention that the semantics was changed.  Also see
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00447.html.
 +
 +2014-06-24  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Be more consistent about the 'Qfoo' naming convention.
 +      * image.c (Fimagemagick_types):
 +      * lisp.h (lisp_h_CHECK_TYPE, CHECK_TYPE, CHECK_ARRAY):
 +      * process.c (Fmake_network_process):
 +      Rename C local identifier 'Qfoo to avoid giving the false
 +      impression that it stands for the symbol 'foo'.
 +
 +2014-06-23  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Simplify and cleanup character conversion stuff.
 +      * lisp.h (multibyte_char_to_unibyte, multibyte_char_to_unibyte_safe):
 +      Remove prototypes.
 +      * character.c (multibyte_char_to_unibyte)
 +      (multibyte_char_to_unibyte_safe): Remove; no longer used.
 +      * character.h (make_char): Remove; unused.
 +      (CHAR_TO_BYTE8, CHAR_TO_BYTE_SAFE): Simplify.
 +      (ASCII_BYTE_P): Remove; ASCII_CHAR_P does the same thing.
 +      * buffer.c, charset.c, charset.h, cmds.c, coding.c, editfns.c:
 +      * fileio.c, indent.c, insdel.c, keyboard.c, lread.c, print.c:
 +      * search.c, term.c, xdisp.c, xterm.c: Related users changed.
 +
 +2014-06-22  Mario Lang  <mlang@delysid.org>
 +
 +      * w32fns.c (Fw32_shell_execute): The the -> the.
 +
 +2014-06-22  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xmenu.c (mouse_position_for_popup):
 +      * xselect.c (mouse_position_for_drop): Do not duplicate ...
 +      * xfns.c (x_relative_mouse_position): ... and prefer this function.
 +      * menu.c (Fx_popup_menu):
 +      * xselect.c (x_handle_dnd_message): Adjust users.
 +      * menu.h (mouse_position_for_popup): Remove prototype.
 +      * xterm.h (x_relative_mouse_position): Add prototype.
 +      * xterm.c (x_find_topmost_parent): Break from the loop and do not
 +      call XFree if XQueryTree returns zero.
  
  2014-06-21  Eli Zaretskii  <eliz@gnu.org>
  
        * fileio.c (Ffile_acl): Port to OS X, where acl_get_file (...,
        ACL_TYPE_ACCESS) doesn't work.
  
 -2014-06-19  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-06-21  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * keyboard.c (read_key_sequence): Don't invoke Vprefix_help_command
        before checking key-translation-map (bug#17659).
  
 -2014-06-19  Dmitry Antipov  <dmantipov@yandex.ru>
 +2014-06-21  Dmitry Antipov  <dmantipov@yandex.ru>
  
        * font.c (font_make_object): Avoid dangling pointer which may
        crash GC (Bug#17771).
  
 -2014-06-18  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-21  Eli Zaretskii  <eliz@gnu.org>
  
        * image.c [5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)]: Declare the
        prototype of DGifCloseFile as appropriate for older and newer
        (gif_load): Call gif_close instead of DGifCloseFile.  Divulge the
        error string where appropriate.  (Bug#17790)
  
 -2014-06-16  Eli Zaretskii  <eliz@gnu.org>
 -
        * xdisp.c (Fmove_point_visually): Instead of testing for keyboard
        macro execution, make sure point didn't move since last complete
        redisplay, as the condition for using the glyph matrix
        information.  (Bug#17777)
  
 -2014-06-14  Eli Zaretskii  <eliz@gnu.org>
 +2014-06-19  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Minor cleanup of fonset code.
 +      * fontset.c (FONTSET_ID, set_fontset_id, FONTSET_NAME)
 +      (set_fontset_name, FONTSET_ASCII, set_fontset_ascii)
 +      (FONTSET_BASE, set_fontset_base, FONTSET_FRAME)
 +      (set_fontset_frame, FONTSET_NOFONT_FACE, set_fontset_nofont_face)
 +      (FONTSET_DEFAULT, set_fontset_default, FONTSET_FALLBACK)
 +      (set_fontset_fallback): Reorder extra slots and avoid unused slots.
 +      (free_realized_fontset): Remove because a no-op since 2008.
 +      (free_face_fontset): Adjust user.
 +      (syms_of_fontset): Shrink fontset by one extra slot.
 +
 +2014-06-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Omit redundant extern decls.
 +      Most of this patch is from Dmitry Antipov, in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00263.html
 +      * commands.h (update_mode_lines):
 +      * frame.h (Qbackground_color, Qforeground_color)
 +      (x_set_menu_bar_lines):
 +      * ftfont.c (ftfont_font_format):
 +      * intervals.h (Qkeymap, Qfont):
 +      * keyboard.c (timer_check, safe_run_hooks, Qregion_extract_function):
 +      * lisp.h (Ffboundp, Qnil, Qt, Qlambda, Qintegerp, Qwholenump)
 +      (Qsymbolp, Qlisp, Qconsp, Qstringp, Qarrayp, Qbufferp, Qmarkerp)
 +      (Qvectorp, Qbuffer_or_string_p, Qchar_table_p, Qvector_or_char_table_p)
 +      (Qfloatp, Qnumberp, Qfont_spec, Qfont_entity, Qfont_object)
 +      (Fbyteorder, wrong_type_argument, Fmax_char, syms_of_composite)
 +      (Fidentity, extract_float, init_display, syms_of_display, Qdisplay):
 +      (Qimage, Qbox, redisplay_preserve_echo_area, char_table_ref)
 +      (char_table_set, char_table_translate, Qautoload, Qbottom, Qtop)
 +      (Qvisible, Qfont, Qfront_sticky, Qrear_nonsticky, init_sigio)
 +      (Qtool_bar, Qheader_line):
 +      * macros.c (Fexecute_kbd_macro):
 +      * xdisp.c (Ftool_bar_height, Ftool_bar_height):
 +      * xterm.c (x_delete_terminal, XSetIMValues):
 +      * xterm.h (x_set_window_size, x_query_color, x_get_focus_frame)
 +      (x_implicitly_set_name, popup_activated)
 +      (widget_store_internal_border):
 +      Remove redundant decls.
 +      * frame.c [USE_X_TOOLKIT]: Include widget.h.
 +      * keyboard.c (Fexit_recursive_edit, Fabort_recursive_edit):
 +      Remove _Noreturn, as make-docfile now does that for us.
 +      * lisp.h (DEFUN): Don't declare fnname here; rely on make-docfile.
 +      (Qregion_extract_function): New decl.
 +      * window.c, xfns.c: Include menu.h.
 +
 +2014-06-17  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * callint.c (Fcall_interactively): Fix up last change (bug#17701).
 +
 +2014-06-17  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fileio.c (Fread_file_name): Do not pass redundant args and ...
 +      * callint.c (read_file_name): ... convert to static here.
 +      * lisp.h (Fread_file_name): Do not EXFUN it.
 +      (STRING_COPYIN): Remove; unused.
 +      * composite.c (CHAR_COMPOSABLE_P): Replace unsafe macro with ...
 +      (char_composable_p): ... static function.  All users changed.
 +      * eval.c (toplevel): Remove redundant #include directives.
 +      * xterm.c (x_initialize): Add static to match prototype.
 +      * ccl.c (Fccl_execute_on_string):
 +      * font.c (fon_intern_prop): Use make_specified_string.
 +
 +2014-06-16  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * Makefile.in (ns-app): Fix typo that broke build on OS X.
 +      Reported by David Caldwell in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00251.html
 +
 +2014-06-16  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Do not ask for XRender extension each time XFT font is opened.
 +      * xftfont.c (xftfont_open): Move call to XRenderQueryExtension ...
 +      * xterm.c (x_term_init) [HAVE_XFT]: ... to here.  Adjust comment.
 +
 +2014-06-15  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in: Use `make -C' rather than `cd && make' throughout.
 +
 +2014-06-15  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (Fmove_point_visually): Don't use the glyph matrix
        information if we are in the middle of executing a keyboard macro,
        since redisplay doesn't update the screen until the macro is
        finished.  (Bug#17777)
  
 -2014-06-13  Eli Zaretskii  <eliz@gnu.org>
 -
        * alloc.c (cleanup_vector): Don't dereference a font driver
        pointer if it is NULL.  (Bug#17771)
  
 +2014-06-13  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in ($(leimdir)/leim-list.el, $(srcdir)/macuvs.h)
 +      ($(lispsource)/international/charprop.el)
 +      ($(libsrc)/make-docfile$(EXEEXT), $(lwlibdir)/liblw.a)
 +      ($(oldXMenudir)/libXMenu11.a, ns-app, .el.elc)
 +      ($(lispsource)/loaddefs.el, bootstrap-emacs$(EXEEXT)):
 +      GNU make automatically passes command-line arguments to sub-makes.
 +
 +2014-06-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Avoid hangs in accept-process-output (Bug#17647).
 +      * lisp.h, process.c (wait_reading_process_input):
 +      Return int, not bool.  All uses changed.
 +      * process.c (SELECT_CANT_DO_WRITE_MASK):
 +      Remove macro, replacing with ...
 +      (SELECT_CAN_DO_WRITE_MASK): ... new constant, with inverted sense.
 +      All uses changed.
 +      (status_notify): New arg WAIT_PROC.  Return int, not void.
 +      All uses changed.
 +
 +2014-06-13  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * menu.c (Fx_popup_menu): Don't call the frame's menu_show_hook if
 +      the frame is the initial frame, because the hook is not set up
 +      then, and Emacs crashes.
 +      Reported by Fabrice Popineau <fabrice.popineau@gmail.com>.
 +
 +2014-06-12  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keymap.c (silly_event_symbol_error): Don't recommend the use
 +      of strings.
 +
  2014-06-11  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (set_cursor_from_row): Fix an off-by-one error when
        matching overlay strings with 'cursor' property against buffer
        positions traversed in the glyph row.  (Bug#17744)
  
 +2014-06-11  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.h (EmacsApp): Always compile in shouldKeepRunning, isFirst
 +      on Cocoa.
 +
 +      * nsterm.m (run): Always compile for Cocoa.  Use runtime check to
 +      determine 10.9 (Bug#17751).
 +
 +      * macfont.m (macfont_draw): Positions were not freed.
 +
 +2014-06-10  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * dispextern.h (PREPARE_FACE_FOR_DISPLAY): Remove as a duplicate of ...
 +      * xfaces.c (prepare_face_for_display) [HAVE_WINDOW_SYSTEM]: ... this
 +      function.  Also adjust comment.
 +      * fringe.c, w32term.c, xdisp.c, xterm.c: All users changed.
 +
 +      * dispextern.h (struct face) [HAVE_XFT]: Ifdef 'extra' member.
 +      * font.c (font_done_for_face):
 +      * xfaces.c (realize_non_ascii_face): Adjust user.
 +      * font.h (struct font_driver): Convert 'prepare_face' to return
 +      void because its return value is never used anyway.
 +      * xfont.c (xfont_prepare_face): Return void.
 +      * xftfont.c (xftfont_prepare_face): Likewise.  Use xmalloc.
 +      (xftfont_done_face): Use xfree.
 +
 +      * dispextern.h (last_tool_bar_item): Remove declaration.
 +      * frame.h (struct frame): New member last_tool_bar_item.
 +      * frame.c (make_frame): Initialize it.
 +      * xdisp.c (toplevel): Remove last_tool_bar_item.
 +      (handle_tool_bar_click, note_tool_bar_highlight):
 +      * w32term.c (w32_read_socket, w32_initialize):
 +      * xterm.c (handle_one_xevent, x_initialize): Adjust users.
 +
 +      * frame.h (window_system_available) [!HAVE_WINDOW_SYSTEM]: Always false.
 +      * frame.c (window_system_available) [HAVE_WINDOW_SYSTEM]: Now here.
 +
 +2014-06-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Say (accept-process-output P)'s result pertains to P if P is non-nil.
 +      * process.c (Faccept_process_output)
 +      (wait_reading_process_output): Mention that if PROCESS is non-nil,
 +      the return value is about PROCESS, not about other processes.
 +
 +2014-06-09  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Further adjustments to mark_object and friends.
 +      Now the mark_object's stack is just 32 bytes on a 64-bit
 +      system, which means extra 20% off the stack usage.
 +      * alloc.c (mark_save_value): As before, refactored out from ...
 +      (mark_object): ... adjusted user.  Also add comment.
 +
 +2014-06-09  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix core dump after a dropped X connection (Bug#17704).
 +      * sysdep.c (stuff_char): Don't abort merely because the selected frame
 +      is dead, as we may be shutting down.
 +
  2014-06-08  Glenn Morris  <rgm@gnu.org>
  
        * fileio.c (write-region-inhibit-fsync): Doc tweak.
  
 -      * data.c (Flss, Fgtr, Fleq, Fgeq): Doc tweaks.
 +      * data.c (Flss, Fgtr, Fleq, Fgeq): Doc tweaks.
 +
 +2014-06-08  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      If a C name must be extern on some platforms, make it extern on all.
 +      * dispextern.h (set_vertical_scroll_bar, erase_phys_cursor)
 +      (load_color):
 +      * font.h (ftxfont_driver) [HAVE_XFT]:
 +      * keyboard.h (menu_items_inuse, ignore_mouse_drag_p, make_ctrl_char):
 +      * lisp.h (get_frame_param):
 +      * menu.h (tty_menu_show):
 +      * process.h (conv_sockaddr_to_lisp, catch_child_signal):
 +      * termhooks.h (encode_terminal_code):
 +      * xterm.h (x_menu_wait_for_event):
 +      Always declare.
 +      * frame.c (get_frame_param):
 +      * fringe.c (max_used_fringe_bitmap):
 +      * ftxfont.c (ftxfont_driver):
 +      * keyboard.c (ignore_mouse_drag_p, make_ctrl_char):
 +      * menu.c (menu_items_inuse):
 +      * process.c (conv_sockaddr_to_lisp, catch_child_signal):
 +      * term.c (encode_terminal_code, tty_menu_show):
 +      * xdisp.c (set_vertical_scroll_bar, erase_phys_cursor):
 +      * xfaces.c (load_color):
 +      * xmenu.c (x_menu_wait_for_event):
 +      Now always extern.
 +
 +2014-06-08  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Change object marking routines to minimize stack usage.
 +      This change moves a few cold paths from mark_object to NO_INLINE
 +      functions and adjusts symbol marking loop.  According to GCC 4.8.2
 +      -Wstack-usage, this reduces mark_object's stack usage from 80 to
 +      48 bytes on a 64-bit system.  For a long byte-force-recompile runs,
 +      stack usage at the mark phase is reduced up to 28%.  Surprisingly,
 +      it also gains up to 3% in speed (with default '-O2 -g3' flags).
 +      * alloc.c (mark_compiled, mark_localized_symbol): New functions,
 +      refactored out from ...
 +      (mark_object): ... adjusted user.  Also mark symbols in a tight
 +      inner loop.
 +      (mark_face_cache): Add NO_INLINE.
 +
 +2014-06-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter
 +      contains garbage on WINDOWSNT (which could potentially infloop at
 +      exit).
 +
 +      Minimize cursor motion during TTY menu updates.
 +      * term.c (tty_menu_display): Don't position cursor here.
 +      Instead, pass the cursor coordinates to update_frame_with_menu.
 +      (tty_menu_activate): Send the hide cursor command only once in an
 +      iteration through the outer 'while' loop.
 +
 +      * dispnew.c (update_frame_1): Accept an additional argument
 +      SET_CURSOR_P, and position the cursor at the end of the frame
 +      update only if that argument is non-zero.  All callers changed to
 +      provide the additional argument as non-zero, except for
 +      update_frame_with_menu.
 +      (update_frame_with_menu): Accept 2 additional arguments ROW and
 +      COL; if they are non-negative, instruct update_frame_1 not to
 +      position the cursor, and instead position it according to ROW and COL.
 +
 +      * dispextern.h (update_frame_with_menu): Update prototype.
 +
 +2014-06-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * callproc.c (call_process): Don't check read-only if we don't insert
 +      anything (bug#17666).
 +
 +2014-06-08  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * dispnew.c (update_frame_with_menu): Set display_completed.
 +
 +2014-06-07  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * term.c (tty_menu_show) [WINDOWSNT]: Make tty_menu_show extern
 +      only for WINDOWSNT.
 +      * menu.h (tty_menu_show) [WINDOWSNT]: Declare extern only for WINDOWSNT.
 +
 +2014-06-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * term.c (tty_menu_show) [!HAVE_NTGUI]: Now static.
 +      * menu.h (tty_menu_show) [!HAVE_NTGUI]: Omit extern decl.
 +
 +2014-06-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * window.c (Frecenter): Signal an error if window-buffer is not
 +      current-buffer.
 +
 +      * keyboard.c (make_lispy_position): Don't include a buffer position in
 +      mode/header-line mouse events.
 +
 +      * keyboard.c (read_char): Handle (t . <event>) in the second use of
 +      Vunread_command_events (bug#17650).
 +
 +2014-06-06  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xterm.c (x_setup_pointer_blanking):
 +      Conditionally probe Xfixes until this stuff is stabilized (Bug#17609).
 +
 +2014-06-05  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * keyboard.c, process.c: Do not define POLL_FOR_INPUT here
 +      because it will be defined in generated config.h if needed.
 +
 +2014-06-04  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Use terminal-specific hooks to display popup dialogs.
 +      * termhooks.h (struct terminal): New field popup_dialog_hook.
 +      * menu.c (emulate_dialog_with_menu): New function, refactored from ...
 +      (Fx_popup_dialog): ... adjusted user.  Also remove old #if 0
 +      code and use popup_dialog_hook.
 +      * nsmenu.m (ns_popup_dialog): Make hook-compatible.
 +      * nsterm.h (ns_popup_dialog): Adjust prototype.
 +      * nsterm.m (ns_create_terminal):
 +      * w32term.c (w32_create_terminal):
 +      * xterm.c (x_create_terminal) [USE_X_TOOLKIT || USE_GTK]:
 +      Setup popup_dialog_hook.
 +
 +2014-06-04  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (report_temacs_memory_usage): Improve the report by
 +      reporting the large blocks that are actually occupied at dump time.
 +
 +      * w32console.c (initialize_w32_display): Set the console
 +      menu_show_hook, otherwise TTY menus are broken on w32.
 +
 +2014-06-04  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Use terminal-specific hooks to display menus.
 +      * termhooks.h (struct terminal): New field menu_show_hook.
 +      * menu.h (<anonymous enum>): Bit flags for menu hooks.
 +      (x_menu_show, w32_menu_show, ns_menu_show, tty_menu_show):
 +      Adjust prototypes.
 +      * menu.c (Fx_popup_menu): Use bit flags and menu_show_hook.
 +      * nsmenu.m (ns_menu_show):
 +      * w32menu.c (w32_menu_show):
 +      * xmenu.c (x_menu_show):
 +      * term.c (tty_menu_show): Adjust to use bit flags.
 +      (set_tty_hooks): Set menu_show_hook.
 +      * xterm.c (x_create_terminal):
 +      * nsterm.m (ns_create_terminal):
 +      * msdos.c (initialize_msdos_display):
 +      * w32term.c (w32_create_terminal): Likewise.
 +
 +2014-06-03  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32heap.c (DUMPED_HEAP_SIZE) [!_WIN64]: Reduce to 11 MB.
 +
 +2014-06-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * sysselect.h (fd_CLR, fd_ISSET, fd_SET, FD_CLR, FD_ISSET)
 +      (FD_SET): Don't define on WINDOWSNT.
 +
 +2014-06-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * emacs.c: Include "sysselect.h", to define its inline functions.
 +      Reported by Glenn Morris in:
 +      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00077.html
 +
 +      Do not require libXt-devel when building with gtk.
 +      * gtkutil.h, menu.h: Include lwlib-widget.h, not lwlib-h, to avoid
 +      dependency on libXt-devel.
 +      * menu.h [HAVE_NTGUI]: Include lwlib-widget.h in this case too.
 +      (enum button_type, widget_value) [HAVE_NTGUI]: Remove, as
 +      lwlib-widget.h now does this.
 +      * nsmenu.m (ns_menu_show): "enabled" -> "enable" to fix typo.
 +
 +2014-06-03  Paul Eggert  <eggert@penguin.cs.ucla.edu>
 +
 +      If ENABLE_CHECKING, range-check args of FD_CLR, FD_ISSET, FD_SET.
 +      * process.c (add_read_fd, delete_read_fd, add_write_fd)
 +      (delete_write_fd, wait_reading_process_output):
 +      Remove now-redundant easserts.
 +      * sysselect.h (SYSSELECT_H): New macro, to avoid double-inclusion woes.
 +      Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
 +      (fd_CLR, fd_ISSET, fd_SET): New inline functions.
 +      (FD_CLR, FD_ISSET, FD_SET): Redefine in terms of these functions.
 +
 +2014-06-03  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (DUMPED_HEAP_SIZE): Move from w32heap.h.  Don't use
 +      HEAPSIZE; instead, define separate values for the 32- and 64-bit builds.
 +      (calloc): Don't undef, it is never defined.
 +      (HEAP_ENTRY_SHIFT): Remove unused macro.
 +
 +      * Makefile.in (C_HEAP_SWITCH): Remove.
 +      (ALL_CFLAGS): Don't use $(C_HEAP_SWITCH).
 +
 +      Fix MS-Windows build broken by menu changes on 2014-06-02.
 +      * w32menu.c (w32_menu_show): Fix a typo that broke compilation.
 +
 +      * menu.h (enum button_type, struct _widget_value) [HAVE_NTGUI]:
 +      Define instead of including ../lwlib/lwlib.h, which causes
 +      compilation errors due to missing X11 headers.
 +
 +2014-06-03  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * process.c (wait_reading_process_output): Omit incorrect test of
 +      p->infd against zero.  Add easserts for infd having a plausible value.
 +
 +2014-06-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Adjust to match recent lwlib changes.
 +      * menu.h (xmalloc_widget_value): Replace by ...
 +      (make_widget_value): ... new prototype.
 +      * menu.c (xmalloc_widget_value): Replace by ...
 +      (make_widget_value): ... new function.
 +      (free_menubar_widget_value_tree, digest_single_submenu): Adjust users.
 +      * gtkutil.c (malloc_widget_value, free_widget_value):
 +      (widget_value_free_list, malloc_cpt): Remove old lwlib-compatible code.
 +      * keyboard.h (enum button_type, struct _widget_value):
 +      * gtkutil.h, nsgui.h, w32gui.h (malloc_widget_value, free_widget_value):
 +      Likewise.
 +      * nsmenu.m (ns_update_menubar, ns_menu_show):
 +      * w32menu.c (set_frame_menubar, w32_menu_show, w32_dialog_show):
 +      * xmenu.c (set_frame_menubar, xmenu_show, x_dialog_show): Adjust users.
 +      * xterm.h (XtParent) [USE_GTK]: Remove unused macro.
 +
 +2014-06-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * image.c (x_query_frame_background_color)
 +      [HAVE_PNG || HAVE_NS || HAVE_IMAGEMAGICK || HAVE_RSVG]:
 +      Fix --enable-gcc-warnings compilation without image libraries.
 +
 +2014-06-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (malloc_after_dump, realloc_after_dump): Update the
 +      emulated break value only if it goes up.
 +      (sbrk): Add assertion that the INCREMENT argument is strictly
 +      zero.  Improve and correct the commentary.
 +
 +2014-06-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Improve AIX-related merge from emacs-24.
 +      * conf_post.h (FLEXIBLE_ARRAY_MEMBER): Fix comment.
 +      * lisp.h (ENUMABLE) [!_AIX]: Don't define to 0 merely because we're
 +      not on AIX; since we're on the trunk we can use enums more broadly.
 +
 +      * frame.c (x_set_frame_parameters): Don't read uninitialized storage.
 +
 +2014-06-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xterm.c (xg_scroll_callback): Remove position, for jump set portion
 +      to min(value, whole).
 +
 +2014-06-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Bring back the changes to GDB-visible symbols, but only on AIX.
 +      And only if it's not pre-4.2 GCC.
 +      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros.
 +      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them.
 +      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 +      New macros.
 +
 +2014-06-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * fileio.c (Finsert_file_contents): Call prepare_to_modify_buffer
 +      with PT, not GPT.  (Bug#16433)
 +
 +      Revert last changes to GDB-visible symbols.
 +      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): Delete macros.
 +      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Don't use them.
 +      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 +      Delete macros.
 +
 +2014-06-02  Glenn Morris  <rgm@gnu.org>
 +
 +      * cmds.c (Fself_insert_command): Allow zero repeat count.  (Bug#17649)
 +
 +2014-06-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix port to 32-bit AIX with xlc (Bug#17598).
 +      * alloc.c (gdb_make_enums_visible): Remove FLOAT_TO_STRING_BUFSIZE.
 +      * conf_post.h (FLEXIBLE_ARRAY_MEMBER) [__IBMC__]: Don't define to empty.
 +      * lisp.h (FLOAT_TO_STRING_BUFSIZE): Make it a macro, instead of an enum,
 +      to work around a compiler bug in IBM xlc 12.1.
 +
 +2014-06-02  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xterm.c (x_update_window_end): Don't invalidate the entire
 +      mouse-highlight info, just signal frame_up_to_date_hook that mouse
 +      highlight needs to be redisplayed.  (Bug#17588)
 +
 +2014-06-02  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port the GDB-visible symbols to AIX.
 +      Without them, GDB doesn't work to debug Emacs, since the AIX linker
 +      optimizes away the relevant external symbols.  Use enums instead;
 +      this suffices for the AIX port, which is 32-bit-only anyway.
 +      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros.
 +      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them.
 +      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 +      New macros.
 +
 +      Include sources used to create macuvs.h.
 +      * Makefile.in ($(srcdir)/macuvs.h): New rule.
 +      * macuvs.h: Use automatically-generated header.
 +
 +2014-06-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port signal-handling to DragonFly BSD (Bug#17646).
 +      * callproc.c, sysdep.c (block_child_signal, unblock_child_signal):
 +      Move implementations from callproc.c to sysdep.c.
 +      * process.h, syssignal.h (block_child_signal, unblock_child_signal):
 +      Move declarations from process.h to syssignal.h.
 +
 +2014-06-01  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * callint.c (Ffuncall_interactively): Add usage.
 +
 +2014-06-01  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfns.m (ns_appkit_version_str): Add os version for Cocoa.
 +
 +2014-05-30  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (malloc_before_dump, malloc_after_dump)
 +      (malloc_before_dump, realloc_after_dump, realloc_before_dump)
 +      (mmap_alloc, mmap_realloc): Check for errors more thoroughly and
 +      set errno where appropriate to emulate CRT functions.
 +
 +2014-05-30  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Debugging facility to check whether 'const char *' points to
 +      relocatable data of non-pure Lisp string.
 +      * alloc.c (maybe_lisp_pointer): New function, refactored out of ...
 +      (mark_maybe_pointer): ... adjusted user.
 +      (relocatable_string_data_p): New function.
 +      * lisp.h (relocatable_string_data_p): Add prototype.
 +      * xdisp.c (message_with_string): If ENABLE_CHECKING, make sure
 +      the pointer to relocatable Lisp data is not used.
 +
 +2014-05-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't let SIGINT handling block SIGCHLD indefinitely (Bug#17561).
 +      * atimer.c (block_atimers):
 +      * callproc.c (block_child_signal): Block SIGINT too;
 +      otherwise, its handler might now unblock signals that it shouldn't.
 +      * keyboard.c (read_char): Clear signal mask, since we may
 +      be in a SIGINT handler, and many signals may be masked.
 +      * keyboard.c (handle_interrupt):
 +      * sysdep.c (handle_arith_signal):
 +      Clear signal mask instead of just unblocking the signal that
 +      was received, since several signals may be blocked at this point.
 +
 +2014-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * Makefile.in (TEMACS_POST_LINK): Remove target.
 +      (emacs$(EXEEXT)): Remove $(ADDSECTION) from prerequisites.
 +      (temacs$(EXEEXT)): Remove $(TEMACS_POST_LINK) from the recipe.
 +
 +2014-05-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * xmenu.c (xdialog_show): Remove prototype, rename to
 +      x_dialog_show, remove 2nd arg because it's always zero
 +      and simplify accordingly.
 +      (xw_popup_dialog): Adjust user.
 +      * w32menu.c (w32_dialog_show): Adjust prototype, remove
 +      2nd arg because it's always zero and simplify accordingly.
 +      (w32_popup_dialog): Adjust user.
 +
 +2014-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32heap.c (report_temacs_memory_usage): New function.
 +
 +      * unexw32.c (unexec) [ENABLE_CHECKING]:
 +      Call report_temacs_memory_usage.
 +
 +      * w32heap.h (report_temacs_memory_usage): Add prototype.
 +
 +2014-05-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't substitute sigprocmask for pthread_sigmask (Bug#17561).
 +      * Makefile.in (LIB_PTHREAD_SIGMASK): Remove; all uses removed.
 +
 +2014-05-29  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * buffer.c (init_buffer): Accept an argument 'initialized'.
 +      [USE_MMAP_FOR_BUFFERS]: If 'initialized' is non-zero, reset
 +      mmap_regions and mmap_fd, to avoid referencing stale data from the
 +      dump phase.  Add an assertion for buffer text of buffers created
 +      in temacs before this function is called.  (Bug#17622)
 +      (mmap_regions_1, mmap_fd_1): Remove unused variables.
 +
 +      * lisp.h (init_buffer): Update prototype.
 +
 +      * emacs.c (main): Pass 'initialized' as the argument to init_buffer.
 +
 +2014-05-29  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * alloc.c (Fgarbage_collect): Fix compilation with
 +      GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE.
 +
 +2014-05-29  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * frame.c, frame.h (frame_char_to_pixel_position)
 +      (frame_set_mouse_position): Now static, and made private in
 +      frame.c rather than public in frame.h.
 +
 +2014-05-28  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Refactor mouse positioning stuff to avoid code duplication.
 +      * frame.h (frame_char_to_pixel_position): New function.
 +      (x_set_mouse_position): Rename to...
 +      (frame_set_mouse_position): ...new function.
 +      (frame_set_mouse_pixel_position): Add prototype.
 +      * nsterm.m, w32term.c, xterm.c (x_set_mouse_pixel_position):
 +      Rename to frame_set_mouse_pixel_position.
 +      * frame.c (Fset_mouse_pixel_position, Fset_mouse_position):
 +      Adjust users.
 +      * xterm.h, w32term.h ( x_set_mouse_position)
 +      (x_set_mouse_pixel_position): Remove prototypes.
 +
 +2014-05-28  Dmitry Antipov  <dmantipov@yandex.ru>
  
 -2014-06-04  Eli Zaretskii  <eliz@gnu.org>
 +      On X, always make pointer visible when deleting frame (Bug#17609).
 +      * frame.c (frame_make_pointer_visible, frame_make_pointer_invisible):
 +      Pass frame as arg.
 +      * frame.h (frame_make_pointer_visible, frame_make_pointer_invisible):
 +      Adjust prototypes.
 +      * cmds.c (Fself_insert_command): Use SELECTED_FRAME.
 +      * keyboard.c (gobble_input): If there is no terminal input error,
 +      make sure the pointer is visible for all frames on this terminal.
 +      * xterm.c (x_free_frame_resources): Enable pointer visibility if
 +      it was previously disabled.
  
 -      * sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter
 -      contains garbage on WINDOWSNT (which could potentially infloop at
 -      exit).
 +2014-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -      Minimize cursor motion during TTY menu updates.
 -      * term.c (tty_menu_display): Don't position cursor here.  Instead,
 -      pass the cursor coordinates to update_frame_with_menu.
 -      (tty_menu_activate): Send the hide cursor command only once in an
 -      iteration through the outer 'while' loop.
 +      * data.c (Fzerop): Move to Elisp.
 +      (syms_of_data): Don't defsubr it.
 +      * keyboard.c (echo_keystrokes_p): New function.
 +      (read_char, record_menu_key, read_key_sequence): Use it.
  
 -      * dispnew.c (update_frame_1): Accept an additional argument
 -      SET_CURSOR_P, and position the cursor at the end of the frame
 -      update only if that argument is non-zero.  All callers changed to
 -      provide the additional argument as non-zero, except for
 -      update_frame_with_menu.
 -      (update_frame_with_menu): Accept 2 additional arguments ROW and
 -      COL; if they are non-negative, instruct update_frame_1 not to
 -      position the cursor, and instead position it according to ROW and
 -      COL.
 +      * callint.c (Qfuncall_interactively): New var.
 +      (Qcall_interactively): Remove.
 +      (Ffuncall_interactively): New function.
 +      (Fcall_interactively): Use it.
 +      (syms_of_callint): Defsubr it.
  
 -      * dispextern.h (update_frame_with_menu): Update prototype.
 +2014-05-27  Stefan Monnier  <monnier@iro.umontreal.ca>
  
 -2014-06-02  Stefan Monnier  <monnier@iro.umontreal.ca>
 +      * bytecode.c (FETCH) [BYTE_CODE_SAFE]: Check the bytecode wasn't
 +      relocated from under us.
  
 -      * callproc.c (call_process): Don't check read-only if we don't insert
 -      anything (bug#17666).
 +2014-05-27  Fabrice Popineau  <fabrice.popineau@gmail.com>
  
 -2014-06-02  Eli Zaretskii  <eliz@gnu.org>
 +      Use mmap(2) emulation for allocating buffer text on MS-Windows.
 +      * Makefile.in (C_HEAP_SWITCH): Get the predefined heap size from
 +      configure, not from HEAPSIZE.
 +      (ADDSECTION, MINGW_TEMACS_POST_LINK): Remove, no longer used.
  
 -      * dispnew.c (update_frame_with_menu): Set display_completed.
 +      * lisp.h (NONPOINTER_BITS): Modify the condition to define to zero
 +      for MinGW, since it no longer uses gmalloc.
  
 -2014-06-01  Paul Eggert  <eggert@cs.ucla.edu>
 +      * buffer.c: Do not define mmap allocations functions for Windows.
 +      Remove mmap_find which is unused. Remove mmap_set_vars which does
 +      nothing useful.
 +      [WINDOWSNT]: Include w32heap.h.
 +      (init_buffer): Always allocate new memory for buffers.
  
 -      * frame.c (x_set_frame_parameters): Don't read uninitialized storage.
 +      * emacs.c: Remove mmap_set_vars calls.
  
 -2014-06-01  Jan Djärv  <jan.h.d@swipnet.se>
 +      * image.c (free_image): Undef free for Windows because it is
 +      redirected to our private version.
  
 -      * xterm.c (xg_scroll_callback): Remove position, for jump set portion
 -      to min(value, whole).
 +      * unexw32.c (COPY_PROC_CHUNK): Use %p format for 64bits compatibility.
 +      (copy_executable_and_dump_data): Remove dumping the heap section.
 +      (unexec): Restore using_dynamic_heap after dumping.
  
 -2014-06-01  Paul Eggert  <eggert@cs.ucla.edu>
 +      * w32heap.c (dumped_data_commit, malloc_after_dump)
 +      (malloc_before_dump, realloc_after_dump, realloc_before_dump)
 +      (free_after_dump, free_before_dump, mmap_alloc, mmap_realloc)
 +      (mmap_free): New functions.
  
 -      Bring back the changes to GDB-visible symbols, but only on AIX.
 -      And only if it's not pre-4.2 GCC.
 -      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros.
 -      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them.
 -      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 -      New macros.
 +      * w32heap.h: Declare dumped_data and mmap_* function prototypes.
  
 -2014-05-31  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-27  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * fileio.c (Finsert_file_contents): Call prepare_to_modify_buffer
 -      with PT, not GPT.  (Bug#16433)
 +      * image.c (imagemagick_load_image): Use MagickRealType for local
 +      'color_scale', instead of double, to avoid a GCC warning about
 +      double promotion.
  
 -      Revert last changes to GDB-visible symbols.
 -      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): Delete macros.
 -      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Don't use them.
 -      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 -      Delete macros.
 +      * xfns.c (Fx_window_property): Remove unused local.
  
 -2014-05-31  Glenn Morris  <rgm@gnu.org>
 +      Don't kill already-reaped process (Bug#17561).
 +      * process.c (process_send_signal): Fix race condition where a
 +      subprocess was reaped by a signal handler between the check for
 +      liveness and calling 'kill', which meant that Emacs could in
 +      theory kill an innocent bystander process.  Do the fix by blocking
 +      SIGCHLD in a critical section that checks liveness before killing.
  
 -      * cmds.c (Fself_insert_command): Allow zero repeat count.  (Bug#17649)
 +2014-05-26  Eli Zaretskii  <eliz@gnu.org>
  
 -2014-05-30  Paul Eggert  <eggert@cs.ucla.edu>
 +      * w32.c (_ANONYMOUS_UNION, _ANONYMOUS_STRUCT): Define only if undefined.
  
 -      Fix port to 32-bit AIX with xlc (Bug#17598).
 -      * alloc.c (gdb_make_enums_visible): Remove FLOAT_TO_STRING_BUFSIZE.
 -      * conf_post.h (FLEXIBLE_ARRAY_MEMBER) [__IBMC__]: Don't define to empty.
 -      * lisp.h (FLOAT_TO_STRING_BUFSIZE): Make it a macro, instead of an enum,
 -      to work around a compiler bug in IBM xlc 12.1.
 +2014-05-26  Ken Brown  <kbrown@cornell.edu>
  
 -2014-05-29  Eli Zaretskii  <eliz@gnu.org>
 +      * w32term.c (x_delete_display): Don't free dpyinfo->w32_id_name,
 +      even if !CYGWIN (see bug#17510).
  
 -      * xterm.c (x_update_window_end): Don't invalidate the entire
 -      mouse-highlight info, just signal frame_up_to_date_hook that mouse
 -      highlight needs to be redisplayed.  (Bug#17588)
 +2014-05-26  Jan Djärv  <jan.h.d@swipnet.se>
  
 -2014-05-29  Paul Eggert  <eggert@cs.ucla.edu>
 +      * nsfns.m (Fns_do_applescript): Surround NSApp run
 +      with calls to ns_init_events, ns_finish_events (Bug#17424).
  
 -      Port the GDB-visible symbols to AIX.
 -      Without them, GDB doesn't work to debug Emacs, since the AIX linker
 -      optimizes away the relevant external symbols.  Use enums instead;
 -      this suffices for the AIX port, which is 32-bit-only anyway.
 -      * lisp.h (ENUMABLE, DEFINE_GDB_SYMBOL_ENUM): New macros.
 -      (ARRAY_MARK_FLAG, PSEUDOVECTOR_FLAG, VALMASK): Use them.
 -      (ARRAY_MARK_FLAG_val, PSEUDOVECTOR_FLAG_val, VALMASK_val):
 -      New macros.
 +      * nsterm.h (ns_init_events, ns_finish_events): Declare.
  
 -2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
 +      * nsterm.m (ns_init_events, ns_finish_events): New functions.
 +      (ns_read_socket, ns_select): Call ns_init_events, ns_finish_events.
  
 -      Include sources used to create macuvs.h.
 -      * Makefile.in ($(srcdir)/macuvs.h): New rule.
 -      * macuvs.h: Use automatically-generated header.
 +      * nsfns.m (ns_do_applescript): Surround executeAndReturnError
 +      with calls to ns_init_events, ns_finish_events (Bug#17424).
  
 -2014-05-25  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-26  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (move_it_in_display_line_to): Don't record wrap position
        if we are iterating over an object that generates glyphs for
        marginal areas.  (Bug#17585)
  
 -2014-05-24  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
  
        * xdisp.c (safe__call1, safe__eval): Now static.
  
 -2014-05-24  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-26  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (safe__call): Accept va_list argument instead of '...'.
        (safe_call, safe__call1): Construct a va_list argument for safe_call.
        (safe_call1): Call safe_call instead of safe__call directly.
  
 -2014-05-24  Ken Brown  <kbrown@cornell.edu>
 +2014-05-26  Ken Brown  <kbrown@cornell.edu>
  
        * w32term.c (x_delete_display) [CYGWIN]: Don't free
        dpyinfo->w32_id_name, to make sure it doesn't get freed more than
        once.  (Bug#17510)
  
 -2014-05-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-05-26  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * xdisp.c: Bind inhibit-quit during pre-redisplay-function.
        (safe__call, safe__call1, safe__eval): New functions.
        (prepare_menu_bars): Use it for pre-redisplay-function (bug#17577).
        (display_mode_element): Same for `:eval'.
  
 -2014-05-22  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-05-26  Paul Eggert  <eggert@cs.ucla.edu>
  
        Fix port to 32-bit AIX (Bug#17540).
        * unexaix.c (copy_text_and_data): Don't add text_scnptr to ptr
        twice.  _text already includes this offset.
        (unrelocate_symbols): Don't cast 64-bit integer to pointer.
  
 -2014-05-21  Eli Zaretskii  <eliz@gnu.org>
 +2014-05-26  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (move_it_in_display_line_to): Avoid infinite recursion:
        when closest_pos is identical to to_charpos, don't recurse, since
        we already tried that, and failed.  (Bug#17539)
  
 -2014-05-20  Eli Zaretskii  <eliz@gnu.org>
 -
        * w32fns.c (unwind_create_frame) [GLYPH_DEBUG]: If we are
        unwinding when frame's faces were not initialized yet, increment
        the frame's image-cache reference count before calling
        x_free_frame_resources.  Don't dereference
        dpyinfo->terminal->image_cache if it is NULL.  (Bug#17524)
  
 -2014-05-11  Glenn Morris  <rgm@gnu.org>
 +2014-05-25  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsfont.m (nsfont_draw): Simplify as arguments are adjusted in
 +      nsterm.m now.
 +
 +      * nsterm.m (ns_draw_glyph_string): Move isComposite and end from
 +      macfont.m, call draw with adjusted arguments so font drivers
 +      don't need to do that.
 +
 +      * macfont.m (macfont_draw): Merge changes from Macport.
 +
 +2014-05-24  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * alloc.c (garbage_collect_1): New function, with all of the guts
 +      of Fgarbage_collect.
 +      (mark_stack): Accept an argument END and don't mark Lisp objects
 +      on the stack beyond the address given by END.  Calculation of END
 +      was moved to Fgarbage_collect.
 +      (Fgarbage_collect): Calculate the end address of the stack portion
 +      that needs to be examined by mark_stack, and pass that address to
 +      garbage_collect_1, which will pass it to mark_stack.
 +      See http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00270.html
 +      for more details about the underlying problems.  In particular,
 +      this avoids dumping Emacs with the large hash-table whose value is
 +      held in purify-flag for most of the time loadup.el runs.
 +
 +2014-05-24  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xfns.c (x_window_property_intern): New function (code from
 +      x_window_property).
 +      (Fx_window_property): Call x_window_property_intern.  If property
 +      not found and NILP (source) and outer window != inner window,
 +      check outer window for property (Bug#17537).
 +
 +2014-05-22  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Supply malloc and alloc_size attributes for extern allocators.
 +      This documents the C API, and helps GCC generate a bit better code.
 +      * conf_post.h (ATTRIBUTE_MALLOC, ATTRIBUTE_ALLOC_SIZE)
 +      (ATTRIBUTE_MALLOC_SIZE): New macros.
 +      * gmalloc.c (malloc, realloc, calloc):
 +      * gtkutil.h (malloc_widget_value):
 +      * lisp.h (ralloc, r_re_alloc, xmalloc, xzalloc, xrealloc, xnmalloc)
 +      (xnrealloc, xstrdup, xlispstrdup, record_xmalloc):
 +      Use them.
 +
 +2014-05-21  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Don't assume that ImageMagick uses a 16-bit quantum (Bug#17519).
 +      * image.c (imagemagick_load_image): Port to hosts that do not use
 +      a 16-bit quantum, i.e., QuantumRange does not equal 65535.
 +
 +2014-05-21  Leo Liu  <sdl.web@gmail.com>
 +
 +      * fns.c (Fnreverse): Accept strings for SEQ and update doc-string.
 +
 +2014-05-20  Michael Albinus  <michael.albinus@gmx.de>
 +
 +      * dbusbind.c (xd_signature): Revert last 2 patches.
 +
 +2014-05-19  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Allow any non-nil value to count as true in bool-vector.
 +      Likewise for xd_signature in dbusbind.c.
 +      This is more consistent with the usual practice in Emacs, which is
 +      that any non-nil value counts as true.
 +      * alloc.c (Fbool_vector): Don't require args to be t or nil.
 +      * dbusbind.c (xd_signature): Likewise, for booleans.
 +      * data.c, lisp.h (Qbooleanp):
 +      * lisp.h (CHECK_BOOLEAN): Remove.  All uses removed.
 +
 +2014-05-19  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * lisp.h (CHECK_BOOLEAN): New function.
 +      * alloc.c (Fbool_vector): New function.
 +      (syms_of_alloc): Defsubr it.
 +      * data.c (Qbooleanp): New symbol.
 +      (syms_of_data): DEFSYM it.
 +      * dbusbind.c (xd_signature): Use CHECK_BOOLEAN.
 +
 +      * font.c (font_matching_entity): Extract font-entity object
 +      from the vector of matching entities (Bug#17486).
 +
 +2014-05-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Assume C99 or later (Bug#17487).
 +      * bytecode.c (B__dummy__): Remove.
 +      * conf_post.h (bool_bf) [!NS_IMPL_GNUSTEP]: Use bool.
 +      (FLEXIBLE_ARRAY_MEMBER): Now always empty.
 +      * dbusbind.c (XD_DEBUG_MESSAGE) [!DBUS_DEBUG]:
 +      * regex.c (DEBUG_PRINT): Assume varargs macros.
 +      * lisp.h (DEFUN_FUNCTION_INIT): Remove.  All uses now assume C99.
 +
 +2014-05-17  Fabrice Popineau  <fabrice.popineau@gmail.com>
 +
 +      * buffer.c (init_buffer) [USE_MMAP_FOR_BUFFERS]: Always map new
 +      memory for every buffer that was dumped.
 +
 +2014-05-15  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * fns.c (Freverse): Allow vectors, bool vectors and strings.
 +      (Fnreverse): Allow vectors and bool vectors.
 +
 +2014-05-14  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      Minor cleanup for terminal setup.
 +      * termhooks.h (create_terminal): Adjust prototype.
 +      * terminal.c (create_terminal): Pass output method and RIF as args.
 +      (init_initial_terminal):
 +      * nsterm.m (ns_create_terminal):
 +      * term.c (init_tty):
 +      * w32term.c (w32_create_terminal):
 +      * xterm.c (x_create_terminal): Adjust users.
 +      Avoid redundant NULL initializers and add comments.
 +
 +2014-05-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * keyboard.c (Qdeactivate_mark): Now static.
 +
 +2014-05-13  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      If available, use Xfixes extension to do pointer blanking.
 +      * Makefile.in (XFIXES_CFLAGS, XFIXES_LIBS): New var.
 +      * xfns.c (x_set_mouse_color): Do not call make_invisible_cursor here.
 +      (make_invisible_cursor): Move to...
 +      * xterm.c (make_invisible_cursor): ...here.
 +      (x_probe_xfixes_extension, xfixes_toggle_visible_pointer)
 +      (x_toggle_visible_pointer, x_setup_pointer_blanking): New functions.
 +      (x_term_init): Call to x_setup_pointer_blanking.
 +      (XTtoggle_invisible_pointer): Use blanking specific to this display.
 +      * xterm.h (struct x_display_info): New member toggle_visible_pointer.
 +
 +2014-05-12  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +
 +      * xdisp.c (draw_glyphs): Set clipping to highlight boundaries.
 +
 +2014-05-12  Glenn Morris  <rgm@gnu.org>
  
        * fileio.c (Ffile_executable_p): Doc tweak.
  
 -2014-05-10  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-05-12  Jan Djärv  <jan.h.d@swipnet.se>
  
        * xsettings.c (init_gsettings): Use g_settings_schema_source_lookup
        instead of deprecated g_settings_list_schemas if possible (Bug#17434).
  
 -2014-05-07  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-05-08  Paul Eggert  <eggert@cs.ucla.edu>
  
        * minibuf.c (read_minibuf): Avoid C99ism in previous patch (Bug#17430).
  
 -2014-05-07  Jarek Czekalski  <jarekczek@poczta.onet.pl>
 +2014-05-08  Jarek Czekalski  <jarekczek@poczta.onet.pl>
  
        Fix initialization of minibuffer history variable (Bug#17430).
        * minibuf.c (read_minibuf): Initialize histval to Qnil if unbound.
        Move the initialization up to prevent any "value void" message.
  
 -2014-05-06  Samuel Bronson  <naesten@gmail.com>
 +2014-05-08  Samuel Bronson  <naesten@gmail.com>
  
        * keyboard.c (Frecursive_edit): Ensure inc&dec of command_loop_level
        are matched (bug#17413).
  
 -2014-05-06  Jarek Czekalski  <jarekczek@poczta.onet.pl>
 +2014-05-08  Jarek Czekalski  <jarekczek@poczta.onet.pl>
  
        Stop tooltips pulling Emacs window to front (Bug#17408).
        * w32fns.c (Fx_show_tip): Add SWP_NOOWNERZORDER flag to
        SetWindowPos invocations.
  
 -2014-05-05  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-05-08  Jan Djärv  <jan.h.d@swipnet.se>
  
        * nsselect.m (Fx_selection_exists_p): Just return Qnil if window system
        not initialized (Bug#17398).
  
 +2014-05-07  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * image.c: Include <png.h> before <setjmp.h> (Bug#17429).
 +
 +2014-05-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * image.c: Do not use libpng if HAVE_NS, as NS does its own thing.
 +      [HAVE_NS]: Do not include png.h.
 +      (x_query_frame_background_color): New function.
 +      (png_load_body, imagemagick_load_image, svg_load_image): Use it.
 +      (png_load_body): Coalesce duplicate code.
 +
  2014-05-04  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      Revert recent libpng changes (Bug#17339).
 -      * Makefile.in (PNG_CFLAGS): Remove; all uses removed.
 -      * image.c [HAVE_LIBPNG_PNG_H]: Include <libpng/png.h>, not <png.h>.
 +      Consult libpng-config more consistently (Bug#17339).
 +      * Makefile.in (PNG_CFLAGS): New var.
 +      (ALL_CFLAGS): Use it.
 +      * image.c [HAVE_PNG]: Don't worry about <libpng/png.h>, as
 +      CFLAGS now handles this.
  
  2014-05-03  Paul Eggert  <eggert@cs.ucla.edu>
  
  
        * buffer.c (overlay_strings): Fix the wording of the commentary.
  
 -2014-05-02  Paul Eggert  <eggert@cs.ucla.edu>
 -
 -      Consult libpng-config more consistently (Bug#17339).
 -      * Makefile.in (PNG_CFLAGS): New var.
 -      (ALL_CFLAGS): Use it.
 -      * image.c [HAVE_PNG]: Don't worry about <libpng/png.h>, as
 -      CFLAGS now handles this.
 -
  2014-05-01  Glenn Morris  <rgm@gnu.org>
  
        * floatfns.c (Fisnan):
        GCC 4.9.0 warned about this, and I couldn't easily prove to my own
        satisfaction that they would always be initialized.
  
 -2014-04-29  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-30  Eli Zaretskii  <eliz@gnu.org>
  
        * term.c (tty_menu_display): Move the cursor to the active menu item.
        (tty_menu_activate): Return the cursor to the active menu item
        for the details of why this is needed by screen readers and
        Braille displays.
  
 -2014-04-29  Glenn Morris  <rgm@gnu.org>
 +2014-04-30  Glenn Morris  <rgm@gnu.org>
  
        * process.c (handle_child_signal):
        Handle systems without WCONTINUED.  (Bug#15110, 17339)
  
 -2014-04-23  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * window.c (struct saved_window): Remove mark.
 +      (Fset_window_configuration, save_window_save)
 +      (compare_window_configurations): Don't touch marks any more.
 +
 +2014-04-28  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Use bits_word for gcmarkbits.
 +      * alloc.c (struct cons_block, struct float_block): On 64-bit hosts,
 +      bits_word is typically a tad more efficient for mark bits than
 +      unsigned is, so use bits_word.  All uses changed.
 +      * lisp.h (BITS_PER_INT): Remove; no longer used.
 +
 +      Avoid undefined behavior in signed left shift.
 +      This ports to GCC 4.9.0 with -fsanitize=undefined.
 +      * alloc.c (bool_vector_fill, SETMARKBIT, UNSETMARKBIT):
 +      * data.c (Fash):
 +      * regex.c (extract_number):
 +      * lisp.h (make_number, XINT):
 +      Do not shift a 1 bit left into a sign bit.
 +      * alloc.c (struct cons_block, struct float_block): Use unsigned,
 +      not int, for gcmarkbits.  All uses changed.
 +
 +2014-04-25  Eli Zaretskii  <eliz@gnu.org>
  
        * search.c (Fnewline_cache_check): Don't try to count newlines
        outside the buffer's restriction, as find_newline doesn't support that.
  
 +2014-04-24  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * window.c (Fset_window_configuration): Deactivate the mark before
 +      unsetting the mark.
 +      (set_window_buffer): Ignore window_initialized.
 +      (window_initialized): Remove.
 +      * keyboard.c (Qdeactivate_mark): Not static any more.
 +      * buffer.c (buffer_local_value): Rename from buffer_local_value_1.
 +      Update all callers.
 +
 +2014-04-23  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * conf_post.h (ADDRESS_SANITIZER_WORKAROUND): Port to GCC 4.9.0
 +      and to clang 3.4, which have fixed the bug.  This should let us
 +      run a bit faster on these platforms when address sanitization is
 +      in effect.
 +
  2014-04-22  Paul Eggert  <eggert@cs.ucla.edu>
  
        Port to GCC 4.9.0 with --enable-gcc-warnings.
        (Fnewline_cache_check): New function.
        (syms_of_search): Defsubr it.
  
 -2014-04-21  Jarek Czekalski  <jarekczek@poczta.onet.pl>
 +2014-04-22  Jarek Czekalski  <jarekczek@poczta.onet.pl>
  
        Fix freezing with scroll bars of GTK3 Toolkit (bug#15801).
        * keyboard.c (unblock_input): Add comment.
        * xgselect.c (xg_select): Prevent Glib main loop recursion.
  
 +2014-04-22  Daniel Colascione  <dancol@dancol.org>
 +
 +      * lread.c (readevalloop_eager_expand_eval): New function
 +      that can recurse into toplevel forms.
 +      (readevalloop): Call it.
 +      * lisp.h: Declare Qprogn.
 +      * callint.c (Qprogn): No longer static.
 +
  2014-04-19  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * intervals.c (rotate_right, rotate_left): Fix up length computation.
        Also change identifiers to match the comments, and add more assertions
        (bug#16234).
  
 -2014-04-18  Eli Zaretskii  <eliz@gnu.org>
 -
 -      * xdisp.c (insert_left_trunc_glyphs): Ensure the left truncation
 -      glyph is written to TEXT_AREA of the temporary glyph_row.
 -      (Bug#17288)
 -
  2014-04-18  Paul Eggert  <eggert@cs.ucla.edu>
  
        * emacs.c (close_output_streams): Don't clear and restore errno.
  
 -2014-04-17  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-04-18  Jan Djärv  <jan.h.d@swipnet.se>
  
        * xterm.c (x_make_frame_visible): Prevent endless loop when frame
        never becomes visible, i.e. using XMonad  (Bug#17237).
  
 -2014-04-17  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-18  Eli Zaretskii  <eliz@gnu.org>
  
 -      * xdisp.c (Fline_pixel_height): Don't assume that the current
 -      buffer and the selected window's buffer are one and the same.
 -      (Bug#17281)
 +      * xdisp.c (insert_left_trunc_glyphs): Ensure the left truncation
 +      glyph is written to TEXT_AREA of the temporary glyph_row.  (Bug#17288)
 +      (Fline_pixel_height): Don't assume that the current buffer and the
 +      selected window's buffer are one and the same.  (Bug#17281)
  
        * insdel.c (invalidate_buffer_caches): Invalidate the bidi
        paragraph-start cache before the newline cache.  (Bug#17269)
  
 +2014-04-17  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * term.c (tty_send_additional_strings): No need to fflush here,
 +      as callers fflush.
 +      (tty_set_terminal_modes): fflush after sending additional strings,
 +      not before.
 +
 +2014-04-17  Daniel Colascione  <dancol@dancol.org>
 +
 +      * term.c (Qtty_mode_set_strings, Qtty_mode_reset_strings):
 +      New symbols.
 +      (tty_send_additional_strings): New function.
 +      (tty_set_terminal_modes, tty_reset_terminal_modes): Use it.
 +      (syms_of_term): Intern tty-mode-set-strings and
 +      tty-mode-reset-strings.
 +
  2014-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * window.c (save_window_save): Lookup window_point_insertion_type in
        Move vfork-related portions under #ifndef MSDOS.
        (syms_of_callproc): Unify templates of MSDOS and WINDOWSNT.
  
 -2014-04-15  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * buffer.c (Foverlays_at): Add argument `sorted'.
  
 -2014-04-14  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-16  Eli Zaretskii  <eliz@gnu.org>
  
        * insdel.c (invalidate_buffer_caches): When deleting or replacing
        text, invalidate the bidi_paragraph_cache upto and including the
        preceding newline.
  
 -2014-04-13  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-04-16  Paul Eggert  <eggert@cs.ucla.edu>
  
        Port to IRIX 6.5 (Bug#9684).
 -      * alloc.c (TAGGABLE_NULL): New constant,
 -      for porting to hosts with nontrivial DATA_SEG_BITS settings.
 -      (next_vector, set_next_vector): Use it.
        * conf_post.h (INET6) [IRIX6_5]: Define.
        (HAVE_GETADDRINFO) [IRIX6_5]: Undef.
        * data.c (BITS_PER_ULL): Don't assume ULLONG_MAX is defined.
 -      * lisp.h (lisp_h_XPNTR): Don't OR in bits that aren't masked out,
 -      for consistency with how TAGGABLE_NULL is computed.
  
 -2014-04-13  Eli Zaretskii  <eliz@gnu.org>
 +2014-04-16  Eli Zaretskii  <eliz@gnu.org>
  
        * keyboard.c (Fopen_dribble_file): Encode the dribble file-name
        before passing it to system APIs.
  
 -      * puresize.h (BASE_PURESIZE): Bump by 1K.  (Bug#17255)
 -
 -2014-04-13  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * bytecode.c (exec_byte_code): Rework the volatiles.  Most importantly,
        make sure stack.byte_string_start is not de-adjusted by pushhandler.
  
 -2014-04-12  Paul Eggert  <eggert@cs.ucla.edu>
 +2014-04-16  Paul Eggert  <eggert@cs.ucla.edu>
  
        * keyboard.c (Fopen_dribble_file): Avoid some races.  (Bug#17187)
  
 +2014-04-15  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Remove DATA_SEG_BITS.
 +      The DATA_SEG_BITS hack was needed for older 32 bit platforms.
 +      As a result of this change, Emacs won't work on IRIX 6.5 with IRIX
 +      cc, but that platform is so old that SGI itself stopped supporting
 +      it in December 2013.  If you still need Emacs on IRIX, please
 +      either compile with GCC and port the undumping code, or run
 +      './configure --with-wide-int'.
 +      * alloc.c (gdb_make_enums_visible): Update to match lisp.h.
 +      * lisp.h (GCTYPEBITS): Move definition up, and switch to the
 +      DEFINE_GDB_SYMBOL_START way to define it.
 +      (NONPOINTER_BITS): New macro.
 +      (EMACS_INT): Use it.
 +      [!USE_LSB_TAG && !WIDE_EMACS_INT]: Fail, and suggest reporting
 +      the problem and/or configuring --with-wide-int.
 +      (USE_LSB_TAG): Simplify, based on above changes.
 +      (gdb_DATA_SEG_BITS): Remove.  All uses removed.
 +      * vm-limit.c (exceeds_lisp_ptr): Remove.  All uses removed.
 +
  2014-04-12  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (move_it_by_lines): If a large portion of buffer text is
        * indent.c (Fvertical_motion): Handle correctly the case when the
        display string is preceded by an empty line.
  
 -2014-04-11  Eli Zaretskii  <eliz@gnu.org>
 -
        * w32.c (sys_umask) <WRITE_USER>: Remove redundant constant, and
        use S_IWRITE instead.
  
  
        * keyboard.c (Fopen_dribble_file): Make file private.  (Bug#17187)
  
 -2014-04-09  Ken Brown  <kbrown@cornell.edu>
 +2014-04-11  Ken Brown  <kbrown@cornell.edu>
  
        * Makefile.in (EMACS_MANIFEST): Revert last change.
  
 +2014-04-10  Daniel Colascione  <dancol@dancol.org>
 +
 +      * puresize.h (BASE_PURESIZE): Increase.
 +
 +2014-04-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (syms_of_keyboard): Make deactivate-mark buffer-local.
 +
 +      * insdel.c (prepare_to_modify_buffer_1): Cancel lock-file checks and
 +      region handling (and don't call signal_before_change) if
 +      inhibit_modification_hooks is set.
 +      (signal_before_change): Don't check inhibit_modification_hooks any more.
 +
 +2014-04-08  Daniel Colascione  <dancol@dancol.org>
 +
 +      * alloc.c (sweep_symbols, mark_object): Assert that symbol
 +      function cells contain valid lisp objects.  (Modified version of
 +      patch from Dmitry).
 +
 +      * alloc.c (detect_suspicious_free): Split actual stack capturing
 +      out into new function for easier breakpoint setting.
 +      (note_suspicious_free): New function.
 +
  2014-04-07  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * lisp.h (struct Lisp_Symbol): New bitfield `pinned'.
        (Fgarbage_collect): Use it.
        (gc_sweep): Remove hack made unnecessary.
  
 -2014-04-05  Glenn Morris  <rgm@gnu.org>
 +2014-04-07  Glenn Morris  <rgm@gnu.org>
  
        * keyboard.c (Fopen_dribble_file): Doc tweak.
  
 -2014-04-04  Jan Djärv  <jan.h.d@swipnet.se>
 +2014-04-07  Ken Brown  <kbrown@cornell.edu>
  
 -      Backport from trunk.
 -      * nsterm.m (updateFrameSize:): If waiting for the tool bar and tool
 -      bar is zero height, just return (Bug#16976).
 -      (initFrameFromEmacs:): Initialize wait_for_tool_bar.
 -      * nsterm.h (EmacsView): Add wait_for_tool_bar.
 -      * nsmenu.m (update_frame_tool_bar): Return early if view or toolbar
 -      is nil.  If waiting for toolbar to complete, force a redraw.
 -      (free_frame_tool_bar): Set wait_for_tool_bar = NO (Bug#16976).
 +      * Makefile.in (EMACS_MANIFEST): Update comment.  (Bug#17176)
  
 -2014-04-03  Ken Brown  <kbrown@cornell.edu>
 +2014-04-07  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      * Makefile.in (EMACS_MANIFEST): Update comment.  (Bug#17176)
 +      * alloc.c: Simplify by removing use of HAVE_EXECINFO_H.
 +      We have a substitute execinfo.h on hosts that lack it.
 +      (suspicious_free_history): Make it EXTERNALLY_VISIBLE so it
 +      isn't optimized away.
 +
 +2014-04-05  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Prefer 'ARRAYELTS (x)' to 'sizeof x / sizeof *x'.
 +      * alloc.c (memory_full):
 +      * charset.c (syms_of_charset):
 +      * doc.c (Fsnarf_documentation):
 +      * emacs.c (main):
 +      * font.c (BUILD_STYLE_TABLE):
 +      * keyboard.c (make_lispy_event):
 +      * profiler.c (setup_cpu_timer):
 +      * xgselect.c (xg_select):
 +      * xterm.c (record_event, STORE_KEYSYM_FOR_DEBUG):
 +      Use ARRAYELTS.
 +      * font.c (FONT_PROPERTY_TABLE_SIZE): Remove.
 +      Replace the only use with ARRAYELTS (font_property_table).
 +      * xfaces.c (DIM): Remove.  All uses replaced by ARRAYELTS.
 +
 +2014-04-03  Daniel Colascione  <dancol@dancol.org>
 +
 +      * xterm.c (x_term_init):
 +      * xfns.c (best_xim_style):
 +      * xfaces.c (Fdump_colors):
 +      * w32fns.c (w32_default_color_map):
 +      * w32.c (init_environment, N_ENV_VARS):
 +      * unexcw.c (read_exe_header):
 +      * term.c (term_get_fkeys_1):
 +      * sysdep.c (init_baud_rate):
 +      * nsterm.m (ns_convert_key):
 +      * nsfns.m (get_geometry_from_preferences):
 +      * msdos.c (dos_set_window_size, init_environment):
 +      * macfont.m (mac_font_get_glyph_for_cid)
 +      (macfont_store_descriptor_attributes)
 +      (macfont_create_attributes_with_spec, mac_ctfont_get_glyph_for_cid):
 +      * keyboard.c (command_loop_1, read_menu_command, make_lispy_event)
 +      (NUM_MOD_NAMES, read_key_sequence_vs, Fcurrent_input_mode)
 +      (syms_of_keyboard):
 +      * image.c (xpm_str_to_color_key):
 +      * fringe.c (MAX_STANDARD_FRINGE_BITMAPS):
 +      * frame.c (x_set_frame_parameters):
 +      * fileio.c (Ffile_selinux_context):
 +      * emacs.c (sort_args):
 +      * dosfns.c (msdos_stdcolor_name):
 +      * dired.c (file_attributes):
 +      * chartab.c (uniprop_decoder_count, uniprop_encode_count):
 +      Change expressions of the form sizeof(arr) / sizeof(arr[0])
 +      to ARRAYELTS (arr).
 +
 +2014-04-02  Daniel Colascione  <dancol@dancol.org>
 +
 +      * data.c (Ffset): Abort if we're trying to set a function call to
 +      a dead lisp object.
 +
 +      * lisp.h (ARRAYELTS): New macro.
 +
 +      * alloc.c: Include execinfo.h if available.
 +      (SUSPICIOUS_OBJECT_CHECKING): New macro; define unconditionally.
 +      (suspicious_free_record): New structure.
 +      (suspicious_objects, suspicious_object_index)
 +      (suspicious_free_history, suspicious_free_history_index):
 +      New variables.
 +      (find_suspicious_object_in_range, detect_suspicious_free)
 +      (Fsuspicious_object): New functions.
 +      (cleanup_vector): Call find_suspicious_object_in_range.
  
  2014-04-02  Martin Rudalics  <rudalics@gmx.at>
  
        * xterm.c (x_new_font): Don't calculate non-toolkit scrollbar
        width from font width (Bug#17163).
  
 -2014-03-30  Martin Rudalics  <rudalics@gmx.at>
 -
        * frame.c (x_set_frame_parameters): Calculate default values of
        new frame sizes only after all other frame parameters have been
        processed (Bug#17142).
  
 -2014-03-28  Ken Brown  <kbrown@cornell.edu>
 +2014-04-02  Ken Brown  <kbrown@cornell.edu>
  
        * conf_post.h (SYSTEM_PURESIZE_EXTRA) [CYGWIN]: Set to 10000.
        (Bug#17112)
  
 -2014-03-28  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 +2014-04-02  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
        * xterm.c (x_draw_image_glyph_string): Adjust image background
        width accordingly when its x position is adjusted.  (Bug#17115)
  
 +2014-04-02  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * font.c (font_list_entities): Do not add empty vector to font cache.
 +      (font_matching_entity): Likewise.  If matching entity is found, insert
 +      1-item vector with this entity instead of entity itself (Bug#17125).
 +
 +      * xterm.c (x_term_init) [USE_LUCID]: Fix minor memory leak.
 +
 +2014-04-01  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * fns.c (validate_subarray): Rename from validate_substring,
 +      since it works for vectors too.  New arg ARRAY.  Optimize for the
 +      non-nil case.  Instead of returning bool, throw an error if out of
 +      range, so that the caller needn't do that.  All uses changed.
 +      Report original values if out of range.
 +      (Fsubstring, Fsubstring_no_properties, secure_hash):
 +      Also optimize the case where FROM is 0 or TO is the size.
 +
 +2014-03-31  Dmitry Antipov  <dmantipov@yandex.ru>
 +
 +      * search.c (Freplace_match): Use make_specified_string.
 +      * xterm.c, w32term.c (x_set_glyph_string_gc): Use emacs_abort
 +      to catch bogus override face of glyph strings.
 +      * fns.c (Fsubstring, Fsubstring_no_properties, secure_hash):
 +      Move common substring range checking code to...
 +      (validate_substring): ...this function.
 +
 +2014-03-31  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsmenu.m (free_frame_tool_bar): Set wait_for_tool_bar = NO (Bug#16976)
 +
 +2014-03-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (updateFrameSize:): If waiting for the tool bar and tool
 +      bar is zero height, just return (Bug#16976).
 +      (initFrameFromEmacs:): Initialize wait_for_tool_bar.
 +
 +      * nsterm.h (EmacsView): Add wait_for_tool_bar.
 +
 +      * nsmenu.m (update_frame_tool_bar): Return early if view or toolbar
 +      is nil.  If waiting for toolbar to complete, force a redraw.
 +
 +2014-03-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * emacs.c (emacs_version): Use PACKAGE_VERSION rather than VERSION.
 +      (emacs_bugreport): New variable.
 +      (usage_message): Use PACKAGE_BUGREPORT.
 +      (syms_of_emacs) <report-emacs-bug-address>: New variable.
 +
 +      * emacs.c (syms_of_emacs) <system-configuration-features>: New var.
 +
 +2014-03-27  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Port recent signal-related changes to FreeBSD.
 +      Reported by Herbert J. Skuhra.
 +      * lisp.h (block_tty_out_signal, unblock_tty_out_signal):
 +      Move decls from here ...
 +      * syssignal.h: ... to here, so that lisp.h doesn't depend on signal.h.
 +
  2014-03-27  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
        * w32term.c (x_draw_image_glyph_string): Fix computation of height
        and width of image background when it is displayed with a 'box'
        face.  (Bug#17115)
  
 -2014-03-26  Paul Eggert  <eggert@penguin.cs.ucla.edu>
 +2014-03-27  Paul Eggert  <eggert@penguin.cs.ucla.edu>
  
        More backward-compatible fix to char-equal core dump (Bug#17011).
        * editfns.c (Fchar_equal): In unibyte buffers, assume values in
        range 128-255 are raw bytes.  Suggested by Eli Zaretskii.
  
 +2014-03-27  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * image.c (init_svg_functions): When loading SVG-related libraries,
 +      free already loaded libraries if the initialization fails.
 +      (rsvg_handle_set_size_callback): Remove declaration, unused.
 +
 +2014-03-26  Paul Eggert  <eggert@cs.ucla.edu>
 +
        Fix core dump in char-equal (Bug#17011).
        * editfns.c (Fchar_equal): Do not use MAKE_CHAR_MULTIBYTE in
        unibyte buffers, as we can't tell whether the characters are
  
        * insdel.c (adjust_markers_for_delete): Remove unused local.
  
 -2014-03-24  Barry O'Reilly  <gundaetiapo@gmail.com>
 +2014-03-26  Barry O'Reilly  <gundaetiapo@gmail.com>
  
        Have (MARKER . ADJUSTMENT) undo records always be immediately
        after their corresponding (TEXT . POS) record in undo list.
        (record_point): at_boundary calculation no longer needs to account
        for marker adjustments.
  
 -2014-03-24  Martin Rudalics  <rudalics@gmx.at>
 +2014-03-26  Martin Rudalics  <rudalics@gmx.at>
  
        * w32term.c (x_set_window_size): Refine fix from 2014-03-14
        (Bug#17077).
  
 -2014-03-23  Glenn Morris  <rgm@gnu.org>
 +2014-03-26  Glenn Morris  <rgm@gnu.org>
  
        * fileio.c (Ffile_symlink_p): Doc fix. (Bug#17073)
  
 -2014-03-23  Stefan Monnier  <monnier@iro.umontreal.ca>
 +2014-03-26  Stefan Monnier  <monnier@iro.umontreal.ca>
  
        * buffer.c (struct sortvec): Add field `spriority'.
        (compare_overlays): Use it.
        (sort_overlays): Set it.
  
 -2014-03-23  Eli Zaretskii  <eliz@gnu.org>
 +2014-03-26  Eli Zaretskii  <eliz@gnu.org>
  
        * xdisp.c (redisplay_window): If all previous attempts to find the
        cursor row failed, try a few alternatives before falling back to
        the top-most row of the window.  Use row_containing_pos.  (Bug#17047)
  
 -2014-03-22  Daniel Colascione  <dancol@dancol.org>
 +2014-03-26  Juanma Barranquero  <lekktu@gmail.com>
  
 -      * process.c (conv_sockaddr_to_lisp): When extracting the string
 -      names of AF_LOCAL sockets, stop before reading uninitialized
 -      memory.
 +      * image.c (x_bitmap_height, x_bitmap_width) [HAVE_X_WINDOWS]:
 +      * sysdep.c (reset_sigio) [!DOS_NT]: Declare conditionally.
 +
 +      * keyboard.c (read_decoded_event_from_main_queue): #ifdef out
 +      variables on Windows.
 +
 +      * w32fns.c (Ffile_system_info): Use parenthesis in and/or expression.
 +
 +      * w32.c (unsetenv): Remove unused var `retval'.
 +      (emacs_gnutls_pull): Remove unused vars `fdset' and `timeout'.
 +
 +      * w32notify.c (watch_worker): Remove unnecesary var sleep_result.
 +      (start_watching): Remove unused var `thr'.
 +
 +      * w32proc.c (sys_spawnve): Comment out unused vars `first', `last'.
 +      (find_child_console): Remove unnecesary var `thread_id'.
 +
 +      * w32term.c (w32_read_socket): Comment out unused vars `row', `columns'.
 +      (x_focus_frame): #ifdef 0 unused variable `dpyinfo'.
 +
 +2014-03-26  Glenn Morris  <rgm@gnu.org>
 +
 +      * filelock.c (Flock_buffer): Doc tweak.
 +
 +      * buffer.c (Frestore_buffer_modified_p, Fkill_buffer):
 +      * emacs.c (shut_down_emacs):
 +      * fileio.c (Finsert_file_contents, write_region):
 +      * filelock.c (top-level, syms_of_filelock):
 +      * insdel.c (prepare_to_modify_buffer_1):
 +      CLASH_DETECTION is always defined now.
 +
 +2014-03-25  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32.c (w32_delayed_load): Call DisableThreadLibraryCalls on the
 +      DLL handle, to speed up thread startup.
 +
 +2014-03-25  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Handle sigmask better with nested signal handlers  (Bug#15561).
 +      * atimer.c (sigmask_atimers): Remove.
 +      Remaining use rewritten to use body of this function.
 +      * atimer.c (block_atimers, unblock_atimers):
 +      * callproc.c (block_child_signal, unblock_child_signal):
 +      * sysdep.c (block_tty_out_signal, unblock_tty_out_signal):
 +      New arg OLDSET.  All callers changed.
 +      * atimer.c (block_atimers, unblock_atimers):
 +      * callproc.c (block_child_signal, unblock_child_signal):
 +      * keyboard.c (handle_interrupt):
 +      * sound.c (vox_configure, vox_close):
 +      Restore the old signal mask rather than unilaterally clearing bits
 +      from the mask, in case a handler is running within another
 +      handler.  All callers changed.
 +      * lisp.h, process.c, process.h, term.c:
 +      Adjust decls and callers to match new API.
 +      * sysdep.c (emacs_sigaction_init): Don't worry about masking SIGFPE;
 +      signal handlers aren't supposed to use floating point anyway.
 +      (handle_arith_signal): Unblock just SIGFPE rather than clearing mask.
 +
 +2014-03-23  Daniel Colascione  <dancol@dancol.org>
 +
 +      Split gc_sweep into discrete functions for legibility and better
 +      stack traces.
 +
 +      * alloc.c (sweep_strings, sweep_vectors): Add NO_INLINE
 +      (sweep_vectors): Fix typo in comment.
 +      (sweep_conses, sweep_floats, sweep_intervals)
 +      (sweep_symbols, sweep_misc, sweep_buffers): New functions.
 +      (gc_sweep): Call new functions, to which existing functionality is
 +      moved.
 +      * fns.c (sweep_weak_hash_tables): Add NO_INLINE.
 +
 +2014-03-23  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * w32fns.c (Fw32_shell_execute): Declare `result' only on Cygwin.
 +
 +2014-03-23  Daniel Colascione  <dancol@dancol.org>
 +
 +      * xfns.c (create_frame_xic): Pass XNStatusAttributes to XCreateIC
 +      only if xic_style calls for it.  This change allows Emacs to work
 +      with ibus.  Also, don't leak resources if create_frame_xic fails,
 +      and stop caching xic_style across different displays.
 +      (supported_xim_styles): Make const.
 +      (best_xim_style): Remove first parameter: it's always just
 +      supported_xim_styles.  Change to look at supported_xim_styles
 +      directly.
 +
 +2014-03-23  Daniel Colascione  <dancol@dancol.org>
 +
 +      * term.c (init_tty): Rearrange condition for clarity; print
 +      appropriate diagnostic.
  
  2014-03-23  Daniel Colascione  <dancol@dancol.org>
  
        * process.c (DATAGRAM_CONN_P): Don't underflow datagram_address
        array.  (ASAN caught.)
  
 +2014-03-22  Glenn Morris  <rgm@gnu.org>
 +
 +      * callproc.c (init_callproc): In etc, look for NEWS rather than GNU.
 +
 +2014-03-22  Daniel Colascione  <dancol@dancol.org>
 +
 +      * process.c (conv_sockaddr_to_lisp): When extracting the string
 +      names of AF_LOCAL sockets, stop before reading uninitialized memory.
 +
  2014-03-21  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
  
        Fix regression introduced by patch for Bug#10500.
        constrain frame size in SW_SHOWMAXIMIZED case so we can truly
        maximize a frame for odd default fonts.
  
 +2014-03-21  Glenn Morris  <rgm@gnu.org>
 +
 +      * minibuf.c (history-length): Increase default from 30 to 100.
 +
 +2014-03-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      * xterm.c (x_bitmap_icon): Stop reading the icon bitmap from disk
 +      every time we switch to minibuffer.
 +
 +      * alloc.c (lisp_align_malloc, allocate_string_data)
 +      (allocate_vectorlike): Allow mmap allocation of lisp objects.
 +      (pointers_fit_in_lispobj_p, mmap_lisp_allowed_p): New functions.
 +
 +2014-03-21  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * w32fns.c (Fw32_shell_execute) [!CYGWIN]: Use ShellExecuteEx, to
 +      support more "verbs".
 +
 +2014-03-21  Daniel Colascione  <dancol@dancol.org>
 +
 +      Always prohibit dumping a dumped Emacs.
 +
 +      * emacs.c (might_dump): New variable.
 +      (Fdump_emacs): Always prohibit dumping of dumped Emacs.
 +      * lisp.h (might_dump): Declare.
 +      * unexcw.c (unexec): Remove now-redundant multiple-dump detection code.
 +
  2014-03-20  Paul Eggert  <eggert@cs.ucla.edu>
  
        * doc.c (store_function_docstring): Fix pointer signedness mismatch.
        * doc.c (store_function_docstring): Warn when we don't know where to
        put a docstring.
        (Fsubstitute_command_keys): Don't advertise the fact that
 -      text-properties are dropped, since we think it's a bug that we'll fix
 -      in 24.5.
 +      text-properties are dropped, since we think it's a bug that we'll fix.
  
        * frame.h (SET_FRAME_VISIBLE): Keep frame_garbaged up to date.
        * xterm.c (handle_one_xevent) <MapNotify>: Don't garbage the frame.
  2014-01-20  Paul Eggert  <eggert@cs.ucla.edu>
  
        Avoid undefined behavior by initializing buffer redisplay bit.
 -      Problem reported by Dmitry Antipov in
 +      Reported by Dmitry Antipov in
        <http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01756.html>.
        * buffer.c (Fget_buffer_create): Initialize redisplay bit.
  
  2013-11-21  Paul Eggert  <eggert@cs.ucla.edu>
  
        Fix some dependency problems that cause unnecessary recompiles.
 -      Problem reported by RMS in
 +      Reported by RMS in
        <http://lists.gnu.org/archive/html/emacs-devel/2013-11/msg00421.html>.
        * Makefile.in (OLDXMENU_TARGET, OLDXMENU, OLDXMENU_DEPS)
        (really-lwlib, really-oldXMenu, stamp-oldxmenu)
  
  2013-10-23  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      Port to Solaris 10 and its bundled GCC.
 -      Problem reported by Timothy C. Burt.
 +      Port to Solaris 10 and its bundled GCC.  Reported by Timothy C. Burt.
        * floatfns.c (isfinite, isnan): Redefine unconditionally.
  
  2013-10-21  Dmitry Antipov  <dmantipov@yandex.ru>
        so it shouldn't be used all the time.  Perhaps we need two
        flavors of 'eassert', one for where 'assume' is far more likely
        to help or to hurt; but that can be done later.
 -      Problem reported by Dmitry Antipov in
 +      Reported by Dmitry Antipov in
        <http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00276.html>.
        Also, don't include <verify.h>; no longer needed.
  
        (imagemagick_get_animation_cache): Fix a double-free error.
        (imagemagick_load_image): Remove the ping_wand code, which only
        apparently saved time on invalid animated images, and slowed down
 -      everything else.  Optimise for the common case.
 +      everything else.  Optimize for the common case.
  
  2013-08-16  Xue Fuqiao  <xfq.free@gmail.com>
  
  
  2013-07-07  Paul Eggert  <eggert@cs.ucla.edu>
  
 -      Port to Ubuntu 10 (Bug#14803).
 -      Problem reported by T.V. Raman.
 +      Port to Ubuntu 10 (Bug#14803).  Reported by T.V. Raman.
        * process.c (close_on_exec, accept4, process_socket):
        Define these if !HAVE_ACCEPT4, not if !SOCK_CLOEXEC.
  
        * emacs.c (malloc_enable_thread): Hoist extern decl to top level.
        (main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
        Invoke malloc_enable_thread even when not interactive.
 -      Problem reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
 +      Reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
        * process.c (init_process_emacs) [CYGWIN]: Tickle glib even
        in this case, since the underlying bug has now been fixed.
  
        * unexelf.c: Don't assume ElfW (Half) fits in int.
        (entry_address, find_section, unexec): Use ptrdiff_t, not int,
        when dealing with ElfW (Half) values, since they can exceed 2**31
 -      on 64-bit OpenBSD hosts.  Problem reported privately by Han Boetes.
 +      on 64-bit OpenBSD hosts.  Reported by Han Boetes (privately).
        (entry_address): Omit unused NUM arg.  All uses changed.
  
  2013-05-07  Juri Linkov  <juri@jurta.org>
diff --combined src/dired.c
index 757eb6d30cda5105b5fe058c53113324e407a921,43cb8373a6d55199a5815423f352f7a17de5ecac..f0e81b612787a8d98bd6f8c0629f4fe49ecec349
@@@ -51,6 -51,13 +51,6 @@@ along with GNU Emacs.  If not, see <htt
  #include "msdos.h"    /* for fstatat */
  #endif
  
 -static Lisp_Object Qdirectory_files;
 -static Lisp_Object Qdirectory_files_and_attributes;
 -static Lisp_Object Qfile_name_completion;
 -static Lisp_Object Qfile_name_all_completions;
 -static Lisp_Object Qfile_attributes;
 -static Lisp_Object Qfile_attributes_lessp;
 -
  static ptrdiff_t scmp (const char *, const char *, ptrdiff_t);
  static Lisp_Object file_attributes (int, char const *, Lisp_Object);
  \f
@@@ -176,8 -183,10 +176,8 @@@ directory_files_internal (Lisp_Object d
    /* Note: ENCODE_FILE and DECODE_FILE can GC because they can run
       run_pre_post_conversion_on_str which calls Lisp directly and
       indirectly.  */
 -  if (STRING_MULTIBYTE (dirfilename))
 -    dirfilename = ENCODE_FILE (dirfilename);
 -  encoded_directory = (STRING_MULTIBYTE (directory)
 -                     ? ENCODE_FILE (directory) : directory);
 +  dirfilename = ENCODE_FILE (dirfilename);
 +  encoded_directory = ENCODE_FILE (directory);
  
    /* Now *bufp is the compiled form of MATCH; don't call anything
       which might compile a new regexp until we're done with the loop!  */
          /* The MS-Windows implementation of 'opendir' doesn't
             actually open a directory until the first call to
             'readdir'.  If 'readdir' fails to open the directory, it
-            sets errno to ENOTDIR; we convert it here to ENOENT so
-            that the error message is similar to what happens on
-            Posix hosts in such cases.  */
-         if (errno == ENOTDIR)
-           {
-             errno = ENOENT;
-             report_file_error ("Opening directory", directory);
-           }
+            sets errno to ENOENT or EACCES, see w32.c.  */
+         if (errno)
+           report_file_error ("Opening directory", directory);
  #endif
          break;
        }
@@@ -454,6 -458,7 +449,6 @@@ These are all file names in directory D
  }
  
  static int file_name_completion_stat (int, struct dirent *, struct stat *);
 -static Lisp_Object Qdefault_directory;
  
  static Lisp_Object
  file_name_completion (Lisp_Object file, Lisp_Object dirname, bool all_flag,
    /* Actually, this is not quite true any more: we do most of the completion
       work with decoded file names, but we still do some filtering based
       on the encoded file name.  */
 -  encoded_file = STRING_MULTIBYTE (file) ? ENCODE_FILE (file) : file;
 +  encoded_file = ENCODE_FILE (file);
  
    encoded_dir = ENCODE_FILE (Fdirectory_file_name (dirname));
  
              QUIT;
              continue;
            }
+ #ifdef WINDOWSNT
+         if (errno)
+           report_file_error ("Opening directory", dirname);
+ #endif
          break;
        }
  
        name = DECODE_FILE (name);
  
        {
 -      Lisp_Object regexps;
 +      Lisp_Object regexps, table = (completion_ignore_case
 +                                    ? Vascii_canon_table : Qnil);
  
        /* Ignore this element if it fails to match all the regexps.  */
 -      if (completion_ignore_case)
 -        {
 -          for (regexps = Vcompletion_regexp_list; CONSP (regexps);
 -               regexps = XCDR (regexps))
 -            if (fast_string_match_ignore_case (XCAR (regexps), name) < 0)
 -              break;
 -        }
 -      else
 -        {
 -          for (regexps = Vcompletion_regexp_list; CONSP (regexps);
 -               regexps = XCDR (regexps))
 -            if (fast_string_match (XCAR (regexps), name) < 0)
 -              break;
 -        }
 +      for (regexps = Vcompletion_regexp_list; CONSP (regexps);
 +           regexps = XCDR (regexps))
 +        if (fast_string_match_internal (XCAR (regexps), name, table) < 0)
 +          break;
  
        if (CONSP (regexps))
          continue;
@@@ -927,6 -945,7 +926,6 @@@ so last access time will always be midn
  static Lisp_Object
  file_attributes (int fd, char const *name, Lisp_Object id_format)
  {
 -  Lisp_Object values[12];
    struct stat s;
    int lstat_result;
  
    if (lstat_result < 0)
      return Qnil;
  
 -  values[0] = (S_ISLNK (s.st_mode) ? emacs_readlinkat (fd, name)
 -             : S_ISDIR (s.st_mode) ? Qt : Qnil);
 -  values[1] = make_number (s.st_nlink);
 -
    if (!(NILP (id_format) || EQ (id_format, Qinteger)))
      {
        block_input ();
        gname = stat_gname (&s);
        unblock_input ();
      }
 -  if (uname)
 -    values[2] = DECODE_SYSTEM (build_unibyte_string (uname));
 -  else
 -    values[2] = make_fixnum_or_float (s.st_uid);
 -  if (gname)
 -    values[3] = DECODE_SYSTEM (build_unibyte_string (gname));
 -  else
 -    values[3] = make_fixnum_or_float (s.st_gid);
 -
 -  values[4] = make_lisp_time (get_stat_atime (&s));
 -  values[5] = make_lisp_time (get_stat_mtime (&s));
 -  values[6] = make_lisp_time (get_stat_ctime (&s));
 -
 -  /* If the file size is a 4-byte type, assume that files of sizes in
 -     the 2-4 GiB range wrap around to negative values, as this is a
 -     common bug on older 32-bit platforms.  */
 -  if (sizeof (s.st_size) == 4)
 -    values[7] = make_fixnum_or_float (s.st_size & 0xffffffffu);
 -  else
 -    values[7] = make_fixnum_or_float (s.st_size);
  
    filemodestring (&s, modes);
 -  values[8] = make_string (modes, 10);
 -  values[9] = Qt;
 -  values[10] = INTEGER_TO_CONS (s.st_ino);
 -  values[11] = INTEGER_TO_CONS (s.st_dev);
  
 -  return Flist (sizeof (values) / sizeof (values[0]), values);
 +  return CALLN (Flist,
 +              (S_ISLNK (s.st_mode) ? emacs_readlinkat (fd, name)
 +               : S_ISDIR (s.st_mode) ? Qt : Qnil),
 +              make_number (s.st_nlink),
 +              (uname
 +               ? DECODE_SYSTEM (build_unibyte_string (uname))
 +               : make_fixnum_or_float (s.st_uid)),
 +              (gname
 +               ? DECODE_SYSTEM (build_unibyte_string (gname))
 +               : make_fixnum_or_float (s.st_gid)),
 +              make_lisp_time (get_stat_atime (&s)),
 +              make_lisp_time (get_stat_mtime (&s)),
 +              make_lisp_time (get_stat_ctime (&s)),
 +
 +              /* If the file size is a 4-byte type, assume that
 +                 files of sizes in the 2-4 GiB range wrap around to
 +                 negative values, as this is a common bug on older
 +                 32-bit platforms.  */
 +              make_fixnum_or_float (sizeof (s.st_size) == 4
 +                                    ? s.st_size & 0xffffffffu
 +                                    : s.st_size),
 +
 +              make_string (modes, 10),
 +              Qt,
 +              INTEGER_TO_CONS (s.st_ino),
 +              INTEGER_TO_CONS (s.st_dev));
  }
  
  DEFUN ("file-attributes-lessp", Ffile_attributes_lessp, Sfile_attributes_lessp, 2, 2, 0,
diff --combined src/w32.c
index acd06ba260128b11634e683828992c547eb9e976,2faa742f9d7e09c2b28119d60ff1fcec8ed7a18d..90096689776395cb6a879e3355c35b3ab60ab94d
+++ b/src/w32.c
@@@ -73,11 -73,9 +73,11 @@@ along with GNU Emacs.  If not, see <htt
  #include <grp.h>
  
  /* MinGW64 defines these in its _mingw.h.  */
 -#if defined(__GNUC__) && !defined(MINGW_W64)
 -#define _ANONYMOUS_UNION
 -#define _ANONYMOUS_STRUCT
 +#ifndef _ANONYMOUS_UNION
 +# define _ANONYMOUS_UNION
 +#endif
 +#ifndef _ANONYMOUS_STRUCT
 +# define _ANONYMOUS_STRUCT
  #endif
  #include <windows.h>
  /* Some versions of compiler define MEMORYSTATUSEX, some don't, so we
@@@ -242,6 -240,8 +242,6 @@@ typedef struct _REPARSE_DATA_BUFFER 
  typedef HRESULT (WINAPI * ShGetFolderPath_fn)
    (IN HWND, IN int, IN HANDLE, IN DWORD, OUT char *);
  
 -Lisp_Object QCloaded_from;
 -
  void globals_of_w32 (void);
  static DWORD get_rid (PSID);
  static int is_symlink (const char *);
@@@ -307,8 -307,6 +307,8 @@@ static BOOL g_b_init_set_named_security
  static BOOL g_b_init_set_named_security_info_a;
  static BOOL g_b_init_get_adapters_info;
  
 +BOOL g_b_init_compare_string_w;
 +
  /*
    BEGIN: Wrapper functions around OpenProcessToken
    and other functions in advapi32.dll that are only
@@@ -882,7 -880,7 +882,7 @@@ set_named_security_info (LPCTSTR lpObje
          g_b_init_set_named_security_info_a = 1;
          hm_advapi32 = LoadLibrary ("Advapi32.dll");
          s_pfn_Set_Named_Security_InfoA =
 -          (SetNamedSecurityInfoA_Proc) GetProcAddress (hm_advapi32, 
 +          (SetNamedSecurityInfoA_Proc) GetProcAddress (hm_advapi32,
                                                         "SetNamedSecurityInfoA");
        }
        if (s_pfn_Set_Named_Security_InfoA == NULL)
@@@ -1709,7 -1707,7 +1709,7 @@@ static unsigned num_of_processors
  /* We maintain 1-sec samples for the last 16 minutes in a circular buffer.  */
  static struct load_sample samples[16*60];
  static int first_idx = -1, last_idx = -1;
 -static int max_idx = sizeof (samples) / sizeof (samples[0]);
 +static int max_idx = ARRAYELTS (samples);
  
  static int
  buf_next (int from)
@@@ -2292,7 -2290,7 +2292,7 @@@ get_long_basename (char * name, char * 
  
  /* Get long name for file, if possible (assumed to be absolute).  */
  BOOL
 -w32_get_long_filename (char * name, char * buf, int size)
 +w32_get_long_filename (const char * name, char * buf, int size)
  {
    char * o = buf;
    char * p;
  }
  
  unsigned int
 -w32_get_short_filename (char * name, char * buf, int size)
 +w32_get_short_filename (const char * name, char * buf, int size)
  {
    if (w32_unicode_filenames)
      {
@@@ -2417,6 -2415,7 +2417,6 @@@ unsetenv (const char *name
  {
    char *var;
    size_t name_len;
 -  int retval;
  
    if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
      {
@@@ -2515,7 -2514,7 +2515,7 @@@ init_environment (char ** argv
  
    int i;
  
 -  const int imax = sizeof (tempdirs) / sizeof (tempdirs[0]);
 +  const int imax = ARRAYELTS (tempdirs);
  
    /* Implementation note: This function explicitly works with ANSI
       file names, not with UTF-8 encoded file names.  This is because
        {"LANG", NULL},
      };
  
 -#define N_ENV_VARS sizeof (dflt_envvars)/sizeof (dflt_envvars[0])
 +#define N_ENV_VARS ARRAYELTS (dflt_envvars)
  
      /* We need to copy dflt_envvars[] and work on the copy because we
         don't want the dumped Emacs to inherit the values of
@@@ -3403,10 -3402,10 +3403,10 @@@ sys_readdir (DIR *dirp
        int ln;
  
        strcpy (filename, dir_pathname);
 -      ln = strlen (filename) - 1;
 -      if (!IS_DIRECTORY_SEP (filename[ln]))
 -      strcat (filename, "\\");
 -      strcat (filename, "*");
 +      ln = strlen (filename);
 +      if (!IS_DIRECTORY_SEP (filename[ln - 1]))
 +      filename[ln++] = '\\';
 +      strcpy (filename + ln, "*");
  
        /* Note: No need to resolve symlinks in FILENAME, because
         FindFirst opens the directory that is the target of a
  
        if (dir_find_handle == INVALID_HANDLE_VALUE)
        {
+         /* Any changes in the value of errno here should be in sync
+            with what directory_files_internal does when it calls
+            readdir.  */
          switch (GetLastError ())
            {
-           case ERROR_PATH_NOT_FOUND:
+             /* Windows uses this value when FindFirstFile finds no
+                files that match the wildcard.  This is not supposed
+                to happen, since our wildcard is "*", but just in
+                case, if there's some weird empty directory with not
+                even "." and ".." entries...  */
+           case ERROR_FILE_NOT_FOUND:
+             errno = 0;
+             /* FALLTHRU */
+           default:
+             break;
            case ERROR_ACCESS_DENIED:
+           case ERROR_NETWORK_ACCESS_DENIED:
+             errno = EACCES;
+             break;
+           case ERROR_PATH_NOT_FOUND:
            case ERROR_INVALID_DRIVE:
            case ERROR_BAD_NETPATH:
-             /* This special value will be noticed by
-                directory_files_internal, which see.  */
-             errno = ENOTDIR;
-             break;
-           default:
+           case ERROR_BAD_NET_NAME:
+             errno = ENOENT;
              break;
            }
          return NULL;
    else if (w32_unicode_filenames)
      {
        if (!FindNextFileW (dir_find_handle, &dir_find_data_w))
-       return NULL;
+       {
+         errno = 0;
+         return NULL;
+       }
      }
    else
      {
        if (!FindNextFileA (dir_find_handle, &dir_find_data_a))
-       return NULL;
+       {
+         errno = 0;
+         return NULL;
+       }
      }
  
    /* Emacs never uses this value, so don't bother making it match
@@@ -3560,7 -3578,11 +3579,11 @@@ open_unc_volume (const char *path
    if (result == NO_ERROR)
      return henum;
    else
-     return INVALID_HANDLE_VALUE;
+     {
+       /* Make sure directory_files_internal reports a sensible error.  */
+       errno = ENOENT;
+       return INVALID_HANDLE_VALUE;
+     }
  }
  
  static void *
@@@ -4982,7 -5004,7 +5005,7 @@@ stat_worker (const char * path, struct 
        {
          /* Make sure root directories end in a slash.  */
          if (!IS_DIRECTORY_SEP (name[len-1]))
 -          strcat (name, "\\");
 +          strcpy (name + len, "\\");
          if (GetDriveType (name) < 2)
            {
              errno = ENOENT;
@@@ -5451,7 -5473,8 +5474,7 @@@ symlink (char const *filename, char con
        p--;
        if (p > linkfn)
        strncpy (tem, linkfn, p - linkfn);
 -      tem[p - linkfn] = '\0';
 -      strcat (tem, filename);
 +      strcpy (tem + (p - linkfn), filename);
        dir_access = faccessat (AT_FDCWD, tem, D_OK, AT_EACCESS);
      }
    else
@@@ -6971,35 -6994,6 +6994,35 @@@ system_process_attributes (Lisp_Object 
    return attrs;
  }
  
 +int
 +w32_memory_info (unsigned long long *totalram, unsigned long long *freeram,
 +               unsigned long long *totalswap, unsigned long long *freeswap)
 +{
 +  MEMORYSTATUS memst;
 +  MEMORY_STATUS_EX memstex;
 +
 +  /* Use GlobalMemoryStatusEx if available, as it can report more than
 +     2GB of memory.  */
 +  if (global_memory_status_ex (&memstex))
 +    {
 +      *totalram  = memstex.ullTotalPhys;
 +      *freeram   = memstex.ullAvailPhys;
 +      *totalswap = memstex.ullTotalPageFile;
 +      *freeswap  = memstex.ullAvailPageFile;
 +      return 0;
 +    }
 +  else if (global_memory_status (&memst))
 +    {
 +      *totalram = memst.dwTotalPhys;
 +      *freeram   = memst.dwAvailPhys;
 +      *totalswap = memst.dwTotalPageFile;
 +      *freeswap  = memst.dwAvailPageFile;
 +      return 0;
 +    }
 +  else
 +    return -1;
 +}
 +
  \f
  /* Wrappers for  winsock functions to map between our file descriptors
     and winsock's handles; also set h_errno for convenience.
@@@ -7904,7 -7898,7 +7927,7 @@@ pipe2 (int * phandles, int pipe2_flags
    int rc;
    unsigned flags;
  
 -  eassert (pipe2_flags == O_CLOEXEC);
 +  eassert (pipe2_flags == (O_BINARY | O_CLOEXEC));
  
    /* make pipe handles non-inheritable; when we spawn a child, we
       replace the relevant handle with an inheritable one.  Also put
@@@ -8277,7 -8271,6 +8300,7 @@@ in
  sys_write (int fd, const void * buffer, unsigned int count)
  {
    int nchars;
 +  USE_SAFE_ALLOCA;
  
    if (fd < 0)
      {
        /* Perform text mode translation if required.  */
        if ((fd_info[fd].flags & FILE_BINARY) == 0)
        {
 -        char * tmpbuf = alloca (count * 2);
 -        unsigned char * src = (void *)buffer;
 -        unsigned char * dst = tmpbuf;
 +        char * tmpbuf;
 +        const unsigned char * src = buffer;
 +        unsigned char * dst;
          int nbytes = count;
  
 +        SAFE_NALLOCA (tmpbuf, 2, count);
 +        dst = tmpbuf;
 +
          while (1)
            {
              unsigned char *next;
 -            /* copy next line or remaining bytes */
 +            /* Copy next line or remaining bytes.  */
              next = _memccpy (dst, src, '\n', nbytes);
              if (next)
                {
 -                /* copied one line ending with '\n' */
 +                /* Copied one line ending with '\n'.  */
                  int copied = next - dst;
                  nbytes -= copied;
                  src += copied;
 -                /* insert '\r' before '\n' */
 +                /* Insert '\r' before '\n'.  */
                  next[-1] = '\r';
                  next[0] = '\n';
                  dst = next + 1;
                  count++;
                }
              else
 -              /* copied remaining partial line -> now finished */
 +              /* Copied remaining partial line -> now finished.  */
                break;
            }
          buffer = tmpbuf;
        HANDLE wait_hnd[2] = { interrupt_handle, ovl->hEvent };
        DWORD active = 0;
  
 +      /* This is async (a.k.a. "overlapped") I/O, so the return value
 +       of FALSE from WriteFile means either an error or the output
 +       will be completed asynchronously (ERROR_IO_PENDING).  */
        if (!WriteFile (hnd, buffer, count, (DWORD*) &nchars, ovl))
        {
          if (GetLastError () != ERROR_IO_PENDING)
            {
              errno = EIO;
 -            return -1;
 +            nchars = -1;
            }
 -        if (detect_input_pending ())
 -          active = MsgWaitForMultipleObjects (2, wait_hnd, FALSE, INFINITE,
 -                                              QS_ALLINPUT);
          else
 -          active = WaitForMultipleObjects (2, wait_hnd, FALSE, INFINITE);
 -        if (active == WAIT_OBJECT_0)
 -          { /* User pressed C-g, cancel write, then leave.  Don't bother
 -               cleaning up as we may only get stuck in buggy drivers.  */
 -            PurgeComm (hnd, PURGE_TXABORT | PURGE_TXCLEAR);
 -            CancelIo (hnd);
 -            errno = EIO;
 -            return -1;
 -          }
 -        if (active == WAIT_OBJECT_0 + 1
 -            && !GetOverlappedResult (hnd, ovl, (DWORD*) &nchars, TRUE))
            {
 -            errno = EIO;
 -            return -1;
 +            /* Wait for the write to complete, and watch C-g while
 +               at that.  */
 +            if (detect_input_pending ())
 +              active = MsgWaitForMultipleObjects (2, wait_hnd, FALSE,
 +                                                  INFINITE, QS_ALLINPUT);
 +            else
 +              active = WaitForMultipleObjects (2, wait_hnd, FALSE, INFINITE);
 +            switch (active)
 +              {
 +              case WAIT_OBJECT_0:
 +                /* User pressed C-g, cancel write, then leave.
 +                   Don't bother cleaning up as we may only get stuck
 +                   in buggy drivers.  */
 +                PurgeComm (hnd, PURGE_TXABORT | PURGE_TXCLEAR);
 +                CancelIo (hnd);
 +                errno = EIO;  /* Why not EINTR? */
 +                nchars = -1;
 +                break;
 +              case WAIT_OBJECT_0 + 1:
 +                if (!GetOverlappedResult (hnd, ovl, (DWORD*) &nchars, TRUE))
 +                  {
 +                    errno = EIO;
 +                    nchars = -1;
 +                  }
 +                break;
 +              }
            }
        }
      }
        }
      }
  
 +  SAFE_FREE ();
    return nchars;
  }
  
@@@ -8800,13 -8776,6 +8823,13 @@@ w32_delayed_load (Lisp_Object library_i
                               /* Possibly truncated */
                               ? make_specified_string (name, -1, len, 1)
                               : Qnil);
 +              /* This prevents thread start and end notifications
 +                 from being sent to the DLL, for every thread we
 +                 start.  We don't need those notifications because
 +                 threads we create never use any of these DLLs, only
 +                 the main thread uses them.  This is supposed to
 +                 speed up thread creation.  */
 +              DisableThreadLibraryCalls (dll_handle);
                break;
              }
          }
@@@ -9140,7 -9109,6 +9163,7 @@@ globals_of_w32 (void
    g_b_init_set_named_security_info_w = 0;
    g_b_init_set_named_security_info_a = 0;
    g_b_init_get_adapters_info = 0;
 +  g_b_init_compare_string_w = 0;
    num_of_processors = 0;
    /* The following sets a handler for shutdown notifications for
       console apps. This actually applies to Emacs in both console and
@@@ -9360,6 -9328,8 +9383,6 @@@ ssize_
  emacs_gnutls_pull (gnutls_transport_ptr_t p, void* buf, size_t sz)
  {
    int n, err;
 -  SELECT_TYPE fdset;
 -  struct timespec timeout;
    struct Lisp_Process *process = (struct Lisp_Process *)p;
    int fd = process->infd;