Fix bug #8468 with redisplay and scroll-margin > 0.
authorEli Zaretskii <eliz@gnu.org>
Mon, 11 Apr 2011 16:39:09 +0000 (19:39 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 11 Apr 2011 16:39:09 +0000 (19:39 +0300)
 src/xdisp.c (redisplay_window): Don't try to determine the character
 position of the scroll margin if the window start point w->startp
 is outside the buffer's accessible region.

1  2 
src/ChangeLog
src/xdisp.c

diff --cc src/ChangeLog
 -      is outside the buffer's accessible region.
+ 2011-04-11  Eli Zaretskii  <eliz@gnu.org>
+       * xdisp.c (redisplay_window): Don't try to determine the character
+       position of the scroll margin if the window start point w->startp
 -2011-03-30  Eli Zaretskii  <eliz@gnu.org>
++      is outside the buffer's accessible region.  (Bug#8468)
 +2011-04-10  Eli Zaretskii  <eliz@gnu.org>
  
 -      * xdisp.c (syms_of_xdisp) <scroll-conservatively>: Document the
 -      threshold of 100 lines for never-recentering scrolling.
 +      Fix write-region and its subroutines for buffers > 2GB.
 +      * fileio.c (a_write, e_write): Modify declaration of arguments and
 +      local variables to support buffers larger than 2GB.
 +      (Fcopy_file): Use EMACS_INT for return value of emacs_read.
 +
 +      * sysdep.c (emacs_write, emacs_read): Use ssize_t for last
 +      argument, local variables, and return value.
 +
 +      * lisp.h: Update prototypes of emacs_write and emacs_read.
 +
 +      * sound.c (vox_write): Use ssize_t for return value of emacs_write.
 +
 +2011-04-10  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xdisp.c (vmessage): Use memchr, not strnlen, which some hosts lack.
 +
 +      Fix more problems found by GCC 4.6.0's static checks.
 +
 +      * xdisp.c (vmessage): Use a better test for character truncation.
 +
 +      * charset.c (load_charset_map): <, not <=, for optimization,
 +      and to avoid potential problems with integer overflow.
 +      * chartab.c (sub_char_table_set_range, char_table_set_range): Likewise.
 +      * casetab.c (set_identity, shuffle): Likewise.
 +      * editfns.c (Fformat): Likewise.
 +      * syntax.c (skip_chars): Likewise.
 +
 +      * xmenu.c (set_frame_menubar): Allocate smaller local vectors.
 +      This also lets GCC 4.6.0 generate slightly better loop code.
 +
 +      * callint.c (Fcall_interactively): <, not <=, for optimization.
 +      (Fcall_interactively): Count the number of arguments produced,
 +      not the number of arguments given.  This is simpler and lets GCC
 +      4.6.0 generate slightly better code.
 +
 +      * ftfont.c: Distingish more carefully between FcChar8 and char.
 +      The previous code passed unsigned char * to a functions like
 +      strlen and xstrcasecmp that expect char *, which does not
 +      conform to the C standard.
 +      (get_adstyle_property, ftfont_pattern_entity): Use FcChar8 for
 +      arguments to FcPatternGetString, and explicitly cast FcChar8 * to
 +      char * when the C standard requires it.
 +
 +      * keyboard.c (read_char): Remove unused var.
 +
 +      * eval.c: Port to Windows vsnprintf (Bug#8435).
 +      Include <limits.h>.
 +      (SIZE_MAX): Define if the headers do not.
 +      (verror): Do not give up if vsnprintf returns a negative count.
 +      Instead, grow the buffer.  This ports to Windows vsnprintf, which
 +      does not conform to C99.  Problem reported by Eli Zaretskii.
 +      Also, simplify the allocation scheme, by avoiding the need for
 +      calling realloc, and removing the ALLOCATED variable.
 +
 +      * eval.c (verror): Initial buffer size is 4000 (not 200) bytes.
 +
 +      Remove invocations of doprnt, as Emacs now uses vsnprintf.
 +      But keep the doprint source code for now, as we might revamp it
 +      and use it again (Bug#8435).
 +      * lisp.h (doprnt): Remove.
 +      * Makefile.in (base_obj): Remove doprnt.o.
 +      * deps.mk (doprnt.o): Remove.
 +
 +      error: Print 32- and 64-bit integers portably (Bug#8435).
 +      Without this change, on typical 64-bit hosts error ("...%d...", N)
 +      was used to print both 32- and 64-bit integers N, which relied on
 +      undefined behavior.
 +      * lisp.h, src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h (pEd):
 +      New macro.
 +      * lisp.h (error, verror): Mark as printf-like functions.
 +      * eval.c (verror): Use vsnprintf, not doprnt, to do the real work.
 +      Report overflow in size calculations when allocating printf buffer.
 +      Do not truncate output string at its first null byte.
 +      * xdisp.c (vmessage): Use vsnprintf, not doprnt, to do the real work.
 +      Truncate the output at a character boundary, since vsnprintf does not
 +      do that.
 +      * charset.c (check_iso_charset_parameter): Convert internal
 +      character to string before calling 'error', since %c now has the
 +      printf meaning.
 +      * coding.c (Fdecode_sjis_char, Fdecode_big5_char): Avoid int
 +      overflow when computing char to be passed to 'error'.  Do not
 +      pass Lisp_Object to 'error'; pass the integer instead.
 +      * nsfns.m (Fns_do_applescript): Use int, not long, since it's
 +      formatted with plain %d.
 +
 +      * eval.c (internal_lisp_condition_case): Don't pass spurious arg.
 +
 +      * keyboard.c (access_keymap_keyremap): Print func name, not garbage.
 +
 +      * coding.c (Fdecode_sjis_char): Don't assume CODE fits in int.
 +
 +      * xterm.c (x_catch_errors): Remove duplicate declaration.
 +
 +      * term.c (maybe_fatal): Mark its 3rd arg as a printf format, too.
 +
 +      * xdisp.c, lisp.h (message_nolog): Remove; unused.
 +
 +2011-04-10  Jim Meyering  <meyering@redhat.com>
 +
 +      use ssize_t and size_t for read- and write-like emacs_gnutls_* functions
 +      * gnutls.c (emacs_gnutls_read): Adjust signature to be more read-like:
 +      return ssize_t not "int", and use size_t as the buffer length.
 +      (emacs_gnutls_write): Likewise, and make the buffer pointer "const".
 +      * gnutls.h: Update declarations.
 +      * process.c (read_process_output): Use ssize_t, to match.
 +      (send_process): Likewise.
 +
 +2011-04-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * image.c (Fimagemagick_types): Doc fix, and comment cleanup.
 +
 +2011-04-09  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * ftfont.c (get_adstyle_property, ftfont_pattern_entity): Use
 +      unsigned char, to match FcChar8 type definition.
 +
 +      * xterm.c (handle_one_xevent):
 +      * xmenu.c (create_and_show_popup_menu):
 +      * xselect.c (x_decline_selection_request)
 +      (x_reply_selection_request): Avoid type-punned deref of X events.
 +
 +2011-04-09  Eli Zaretskii  <eliz@gnu.org>
 +
 +      Fix some uses of `int' instead of EMACS_INT.
 +      * search.c (string_match_1, fast_string_match)
 +      (fast_c_string_match_ignore_case, fast_string_match_ignore_case)
 +      (scan_buffer, find_next_newline_no_quit)
 +      (find_before_next_newline, search_command, Freplace_match)
 +      (Fmatch_data): Make some `int' variables be EMACS_INT.
 +
 +      * xdisp.c (display_count_lines): 3rd argument and return value now
 +      EMACS_INT.  All callers changed.
 +      (pint2hrstr): Last argument is now EMACS_INT.
 +
 +      * coding.c (detect_coding_utf_8, detect_coding_emacs_mule)
 +      (detect_coding_iso_2022, detect_coding_sjis, detect_coding_big5)
 +      (detect_coding_ccl, detect_coding_charset, decode_coding_utf_8)
 +      (decode_coding_utf_16, decode_coding_emacs_mule)
 +      (decode_coding_iso_2022, decode_coding_sjis, decode_coding_big5)
 +      (decode_coding_ccl, decode_coding_charset)
 +      <consumed_chars, consumed_chars_base>: Declare EMACS_INT.
 +      (decode_coding_iso_2022, decode_coding_emacs_mule)
 +      (decode_coding_sjis, decode_coding_big5, decode_coding_charset)
 +      <char_offset, last_offset>: Declare EMACS_INT.
 +      (encode_coding_utf_8, encode_coding_utf_16)
 +      (encode_coding_emacs_mule, encode_invocation_designation)
 +      (encode_designation_at_bol, encode_coding_iso_2022)
 +      (encode_coding_sjis, encode_coding_big5, encode_coding_ccl)
 +      (encode_coding_raw_text, encode_coding_charset) <produced_chars>:
 +      Declare EMACS_INT.
 +      (ASSURE_DESTINATION): Declare more_bytes EMACS_INT.
 +      (encode_invocation_designation): Last argument P_NCHARS is now
 +      EMACS_INT.
 +      (decode_eol): Declare pos_byte, pos, and pos_end EMACS_INT.
 +      (produce_chars): from_nchars and to_nchars are now EMACS_INT.
 +
 +      * coding.h (struct coding_system) <head_ascii>: Declare EMACS_INT.
 +      All users changed.
 +
 +      * ccl.c (Fccl_execute_on_string): Declare some variables
 +      EMACS_INT.
 +
 +2011-04-08  Samuel Thibault  <sthibault@debian.org>  (tiny change)
 +
 +      * term.c (init_tty): Fix incorrect ifdef placement (Bug#8450).
 +
 +2011-03-19  Christoph Scholtes  <cschol2112@googlemail.com>
 +
 +      * process.c (Fformat_network_address): Doc fix.
 +
 +2011-04-08  T.V. Raman  <tv.raman.tv@gmail.com>  (tiny change)
 +
 +      * xml.c (parse_region): Avoid creating spurious whiespace nodes.
 +
 +2011-04-08  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * keyboard.c (read_char): Call Lisp function help-form-show,
 +      instead of using internal_with_output_to_temp_buffer.
 +      (Qhelp_form_show): New var.
 +      (syms_of_keyboard): Use DEFSYM macro.
 +
 +      * print.c (internal_with_output_to_temp_buffer): Function deleted.
 +
 +      * lisp.h (internal_with_output_to_temp_buffer): Remove prototype.
 +
 +2011-04-06  Chong Yidong  <cyd@stupidchicken.com>
 +
 +      * process.c (Flist_processes): Removed to Lisp.
 +      (list_processes_1): Deleted.
 +
 +2011-04-06  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * msdos.c (careadlinkat, careadlinkatcwd): MS-DOS replacements.
 +
 +      * w32.c (careadlinkat, careadlinkatcwd): New always-fail stubs.
 +
 +2011-04-06  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix more problems found by GCC 4.6.0's static checks.
 +
 +      * xmenu.c (Fx_popup_dialog): Don't assume string is free of formats.
 +
 +      * menu.c (Fx_popup_menu): Don't assume error_name lacks printf formats.
 +
 +      * lisp.h (message, message_nolog, fatal): Mark as printf-like.
 +
 +      * xdisp.c (vmessage): Mark as a printf-like function.
 +
 +      * term.c (vfatal, maybe_fatal): Mark as printf-like functions.
 +
 +      * sound.c (sound_warning): Don't crash if arg contains a printf format.
 +
 +      * image.c (tiff_error_handler, tiff_warning_handler): Mark as
 +      printf-like functions.
 +      (tiff_load): Add casts to remove these marks before passing them
 +      to system-supplied API.
 +
 +      * eval.c (Fsignal): Remove excess argument to 'fatal'.
 +
 +      * coding.c (EMIT_ONE_BYTE, EMIT_TWO_BYTES): Use unsigned, not int.
 +      This avoids several warnings with gcc -Wstrict-overflow.
 +      (DECODE_COMPOSITION_RULE): If the rule is invalid, goto invalid_code
 +      directly, rather than having caller test rule sign.  This avoids
 +      some unnecessary tests.
 +      * composite.h (COMPOSITION_ENCODE_RULE_VALID): New macro.
 +      (COMPOSITION_ENCODE_RULE): Arguments now must be valid.  This
 +      affects only one use, in DECODE_COMPOSITION_RULE, which is changed.
 +
 +      * xfont.c (xfont_text_extents): Remove var that was set but not used.
 +      (xfont_open): Avoid unnecessary tests.
 +
 +      * composite.c (composition_gstring_put_cache): Use unsigned integer.
 +
 +      * composite.h, composite.c (composition_gstring_put_cache):
 +      Use EMACS_INT, not int, for length.
 +
 +      * composite.h (COMPOSITION_DECODE_REFS): New macro,
 +      breaking out part of COMPOSITION_DECODE_RULE.
 +      (COMPOSITION_DECODE_RULE): Use it.
 +      * composite.c (get_composition_id): Remove unused local vars,
 +      by using the new macro.
 +
 +      * textprop.c (set_text_properties_1): Change while to do-while,
 +      since the condition is always true at first.
 +
 +      * intervals.c (graft_intervals_into_buffer): Mark var as used.
 +      (interval_deletion_adjustment): Return unsigned value.
 +      All uses changed.
 +
 +      * process.c (list_processes_1, create_pty, read_process_output):
 +      (exec_sentinel): Remove vars that were set but not used.
 +      (create_pty): Remove unnecessary "volatile"s.
 +      (Fnetwork_interface_info): Avoid possibility of int overflow.
 +      (read_process_output): Do adaptive read buffering even if carryover.
 +      (read_process_output): Simplify nbytes computation if buffered.
 +
 +      * bytecode.c (exec_byte_code): Rename local to avoid shadowing.
 +
 +      * syntax.c (scan_words): Remove var that was set but not used.
 +      (update_syntax_table): Use unsigned instead of int.
 +
 +      * lread.c (lisp_file_lexically_bound_p): Use ints rather than endptrs.
 +      (lisp_file_lexically_bound_p, read1): Use unsigned instead of int.
 +      (safe_to_load_p): Make the end-of-loop test the inverse of the in-loop.
 +
 +      * print.c (print_error_message): Avoid int overflow.
 +
 +      * font.c (font_list_entities): Redo for clarity,
 +      so that reader need not know FONT_DPI_INDEX + 1 == FONT_SPACING_INDEX.
 +
 +      * font.c (font_find_for_lface, Ffont_get_glyphs): Remove unused vars.
 +      (font_score): Avoid potential overflow in diff calculation.
 +
 +      * fns.c (substring_both): Remove var that is set but not used.
 +      (sxhash): Redo loop for clarity and to avoid wraparound warning.
  
 -2011-03-29  Eli Zaretskii  <eliz@gnu.org>
 +      * eval.c (funcall_lambda): Rename local to avoid shadowing.
  
 -      * xdisp.c (try_scrolling): When scrolling down aggressively,
 -      scroll one screen line less, to make sure we end up at the margin
 -      for fractions close to 1.
 +      * alloc.c (mark_object_loop_halt, mark_object): Use size_t, not int.
 +      Otherwise, GCC 4.6.0 optimizes the loop check away since the check
 +      can always succeed if overflow has undefined behavior.
  
 -2011-03-28  Eli Zaretskii  <eliz@gnu.org>
 +      * search.c (boyer_moore, wordify): Remove vars set but not used.
 +      (wordify): Omit three unnecessary tests.
  
 -      * xdisp.c (try_scrolling): When point is above the window, allow
 -      searching as far as scroll_max, or one screenful, to compute
 -      vertical distance from PT to the scroll margin position.  This
 -      prevents try_scrolling from unnecessarily failing when
 +      * indent.c (MULTIBYTE_BYTES_WIDTH): Don't compute wide_column.
 +      All callers changed.  This avoids the need for an unused var.
 +
 +      * casefiddle.c (casify_region): Remove var that is set but not used.
 +
 +      * dired.c (file_name_completion): Remove var that is set but not used.
 +
 +      * fileio.c (Finsert_file_contents): Make EOF condition clearer.
 +
 +      * fileio.c (Finsert_file_contents): Avoid signed integer overflow.
 +      (Finsert_file_contents): Remove unnecessary code checking fd.
 +
 +      * minibuf.c (read_minibuf_noninteractive): Use size_t for sizes.
 +      Check for integer overflow on size calculations.
 +
 +      * buffer.c (Fprevious_overlay_change): Remove var that is set
 +      but not used.
 +
 +      * keyboard.c (menu_bar_items, read_char_minibuf_menu_prompt):
 +      Remove vars that are set but not used.
 +      (timer_check_2): Don't assume timer-list and idle-timer-list are lists.
 +      (timer_check_2): Mark vars as initialized.
 +
 +      * gtkutil.c (xg_get_file_with_chooser): Mark var as initialized.
 +
 +      * image.c (lookup_image): Remove var that is set but not used.
 +      (xbm_load): Use parse_p, for gcc -Werror=unused-but-set-variable.
 +
 +      * fontset.c (Finternal_char_font, Ffontset_info): Remove vars
 +      that are set but not used.
 +
 +      * xfns.c (make_invisible_cursor): Don't return garbage
 +      if XCreateBitmapFromData fails (Bug#8410).
 +
 +      * xselect.c (x_get_local_selection, x_handle_property_notify):
 +      Remove vars that are set but not used.
 +
 +      * xfns.c (x_create_tip_frame): Remove var that is set but not used.
 +      (make_invisible_cursor): Initialize a possibly-uninitialized variable.
 +
 +      * xterm.c (x_scroll_bar_to_input_event) [!USE_GTK]:
 +      Remove var that is set but not used.
 +      (scroll_bar_windows_size): Now size_t, not int.
 +      (x_send_scroll_bar_event): Use size_t, not int, for sizes.
 +      Check for overflow.
 +
 +      * xfaces.c (realize_named_face): Remove vars that are set but not used.
 +      (map_tty_color) [!defined MSDOS]: Likewise.
 +
 +      * term.c (tty_write_glyphs): Use size_t; this avoids overflow warning.
 +
 +      * coding.c: Remove vars that are set but not used.
 +      (DECODE_COMPOSITION_RULE): Remove 2nd arg, which is unused.
 +      All callers changed.
 +      (decode_coding_utf_8, decode_coding_utf_16 decode_coding_emacs_mule):
 +      (decode_coding_iso_2022, encode_coding_sjis, encode_coding_big5):
 +      (decode_coding_charset): Remove vars that are set but not used.
 +
 +      * bytecode.c (Fbyte_code) [!defined BYTE_CODE_SAFE]: Remove var
 +      that is set but not used.
 +
 +      * print.c (print_object): Remove var that is set but not used.
 +
 +      Replace 2 copies of readlink code with 1 gnulib version (Bug#8401).
 +      The gnulib version avoids calling malloc in the usual case,
 +      and on 64-bit hosts doesn't have some arbitrary 32-bit limits.
 +      * fileio.c (Ffile_symlink_p): Use emacs_readlink.
 +      * filelock.c (current_lock_owner): Likewise.
 +      * lisp.h (READLINK_BUFSIZE, emacs_readlink): New function.
 +      * sysdep.c: Include allocator.h, careadlinkat.h.
 +      (emacs_no_realloc_allocator): New static constant.
 +      (emacs_readlink): New function.
 +      * deps.mk (sysdep.o): Depend on ../lib/allocator.h and on
 +      ../lib/careadlinkat.h.
 +
 +2011-04-04  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (safe_run_hook_funcall): Fix last change (don't stop at the
 +      first non-nil return value).
 +
 +2011-04-03  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (ns_update_auto_hide_menu_bar): Define MAC_OS_X_VERSION_10_6
 +      if not defined (Bug#8403).
 +
 +2011-04-02  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * xdisp.c (display_count_lines): Remove parameter `start',
 +      unused since 1998-01-01T02:27:27Z!rms@gnu.org.  All callers changed.
 +      (get_char_face_and_encoding): Remove parameter `multibyte_p',
 +      unused since 2008-05-14T01:40:23Z!handa@m17n.org.  All callers changed.
 +      (fill_stretch_glyph_string): Remove parameters `row' and `area',
 +      unused at least since Kim's GUI unification at 2003-03-16T20:45:46Z!storm@cua.dk
 +      and thereabouts.  All callers changed.
 +      (get_per_char_metric): Remove parameter `f', unused since
 +      2008-05-14T01:40:23Z!handa@m17n.org.  All callers changed.
 +
 +2011-04-02  Jim Meyering  <meyering@redhat.com>
 +
 +      do not dereference NULL upon failed strdup
 +      * nsfont.m (ns_descriptor_to_entity): Use xstrdup, not strdup.
 +      (ns_get_family): Likewise.
 +
 +2011-04-02  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * eval.c (unwind_to_catch) [DEBUG_GCPRO]: Remove redundant assignment.
 +
 +2011-04-02  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (ns_update_auto_hide_menu_bar): Only for OSX 10.6 or
 +      later (Bug#8403).
 +
 +2011-04-01  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      Add lexical binding.
 +
 +      * window.c (Ftemp_output_buffer_show): New fun.
 +      (Fsave_window_excursion):
 +      * print.c (Fwith_output_to_temp_buffer): Move to subr.el.
 +
 +      * lread.c (lisp_file_lexically_bound_p): New function.
 +      (Fload): Bind Qlexical_binding.
 +      (readevalloop): Remove `evalfun' arg.
 +      Bind Qinternal_interpreter_environment.
 +      (Feval_buffer): Bind Qlexical_binding.
 +      (defvar_int, defvar_bool, defvar_lisp_nopro, defvar_kboard):
 +      Mark as dynamic.
 +      (syms_of_lread): Declare `lexical-binding'.
 +
 +      * lisp.h (struct Lisp_Symbol): New field `declared_special'.
 +
 +      * keyboard.c (eval_dyn): New fun.
 +      (menu_item_eval_property): Use it.
 +
 +      * image.c (parse_image_spec): Use Ffunctionp.
 +
 +      * fns.c (concat, mapcar1): Accept byte-code-functions.
 +
 +      * eval.c (Fsetq): Handle lexical vars.
 +      (Fdefun, Fdefmacro, Ffunction): Make closures when needed.
 +      (Fdefconst, Fdefvaralias, Fdefvar): Mark as dynamic.
 +      (FletX, Flet): Obey lexical binding.
 +      (Fcommandp): Handle closures.
 +      (Feval): New `lexical' arg.
 +      (eval_sub): New function extracted from Feval.  Use it almost
 +      everywhere where Feval was used.  Look up vars in lexical env.
 +      Handle closures.
 +      (Ffunctionp): Move from subr.el.
 +      (Ffuncall): Handle closures.
 +      (apply_lambda): Remove `eval_flags'.
 +      (funcall_lambda): Handle closures and new byte-code-functions.
 +      (Fspecial_variable_p): New function.
 +      (syms_of_eval): Initialize the Vinternal_interpreter_environment var,
 +      but without exporting it to Lisp.
 +
 +      * doc.c (Fdocumentation, store_function_docstring):
 +      * data.c (Finteractive_form): Handle closures.
 +
 +      * callint.c (Fcall_interactively): Preserve lexical-binding mode for
 +      interactive spec.
 +
 +      * bytecode.c (Bstack_ref, Bstack_set, Bstack_set2, BdiscardN): New
 +      byte-codes.
 +      (exec_byte_code): New function extracted from Fbyte_code to handle new
 +      calling convention for byte-code-functions.  Add new byte-codes.
 +
 +      * buffer.c (defvar_per_buffer): Set new `declared_special' field.
 +
 +      * alloc.c (Fmake_symbol): Init new `declared_special' field.
 +
 +2011-03-31  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * xdisp.c (redisplay_internal): Fix prototype.
 +
 +2011-03-31  Eli Zaretskii  <eliz@gnu.org>
 +
 +      * xdisp.c (SCROLL_LIMIT): New macro.
 +      (try_scrolling): Use it when setting scroll_limit.  Limit
 +      scrolling to 100 screen lines.
 +      (redisplay_window): Even when falling back on "recentering",
 +      position point in the window according to scroll-conservatively,
 +      scroll-margin, and scroll-*-aggressively variables.  (Bug#6671)
 +
 +      (try_scrolling): When point is above the window, allow searching
 +      as far as scroll_max, or one screenful, to compute vertical
 +      distance from PT to the scroll margin position.  This prevents
 +      try_scrolling from unnecessarily failing when
        scroll-conservatively is set to a value slightly larger than the
 -      window height.
 +      window height.  Clean up the case of PT below the margin at bottom
 +      of window: scroll_max can no longer be INT_MAX.  When aggressive
 +      scrolling is in use, don't let point enter the opposite scroll
 +      margin as result of the scroll.
 +      (syms_of_xdisp) <scroll-conservatively>: Document the
 +      threshold of 100 lines for never-recentering scrolling.
 +
 +2011-03-31  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * dispextern.h (move_it_by_lines):
 +      * xdisp.c (move_it_by_lines): Remove parameter `need_y_p', unused
 +      since 2000-12-29T14:24:09Z!gerd@gnu.org.  All callers changed.
 +      (message_log_check_duplicate): Remove parameters `prev_bol' and
 +      `this_bol', unused since 1998-01-01T02:27:27Z!rms@gnu.org.  All callers changed.
 +      (redisplay_internal): Remove parameter `preserve_echo_area',
 +      unused since 1999-07-21T21:43:52Z!gerd@gnu.org.  All callers changed.
 +
 +      * indent.c (Fvertical_motion):
 +      * window.c (window_scroll_pixel_based, Frecenter):
 +      Don't pass `need_y_p' to `move_it_by_lines'.
 +
 +2011-03-30  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * eval.c (struct backtrace): Don't cheat with negative numbers, but do
 +      steal a few bits to be more compact.
 +      (interactive_p, Fbacktrace, Fbacktrace_frame, mark_backtrace):
 +      Remove unneeded casts.
 +
 +      * bytecode.c (Fbyte_code): CAR and CDR can GC.
  
 -2011-03-27  Eli Zaretskii  <eliz@gnu.org>
 +2011-03-30  Zachary Kanfer  <zkanfer@gmail.com>  (tiny change)
  
 -      * xdisp.c (try_scrolling): Clean up the case of PT below the
 -      margin at bottom of window: scroll_max can no longer be INT_MAX.
 -      (redisplay_window): Find character position of margin and use
 -      that, rather than adding margin to PT.
 +      * keyboard.c (Fexecute_extended_command): Do log the "suggest key
 +      binding" message (bug#7967).
 +
 +2011-03-30  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      Fix more problems found by GCC 4.6.0's static checks.
 +
 +      * unexelf.c (unexec) [! (defined _SYSTYPE_SYSV || defined __sgi)]:
 +      Remove unused local var.
 +
 +      * editfns.c (Fmessage_box): Remove unused local var.
 +
 +      * xdisp.c (try_window_reusing_current_matrix, x_produce_glyphs):
 +      (note_mode_line_or_margin_highlight, note_mouse_highlight):
 +      Omit unused local vars.
 +      * window.c (shrink_windows): Omit unused local var.
 +      * menu.c (digest_single_submenu): Omit unused local var.
 +      * dispnew.c (update_window) [PERIODIC_PREEMPTION_CHECKING]:
 +      Omit unused local var.
 +
 +      * keyboard.c (parse_modifiers_uncached, parse_modifiers):
 +      Don't assume string length fits in int.
 +      (keyremap_step, read_key_sequence): Use size_t for sizes.
 +      (read_key_sequence): Don't check last_real_key_start redundantly.
 +
 +      * callproc.c (Fcall_process, Fcall_process_region): Use SAFE_ALLOCA
 +      instead of alloca (Bug#8344).
 +
 +      * eval.c (Fbacktrace): Don't assume nargs fits in int.
 +      (Fbacktrace_frame): Don't assume nframes fits in int.
 +
 +      * syntax.c (scan_sexps_forward): Avoid pointer wraparound.
 +
 +      * xterm.c (x_make_frame_visible, same_x_server): Redo to avoid overflow
 +      concerns.
 +
 +      * term.c (produce_glyphless_glyph): Remove unnecessary test.
 +
 +      * cm.c (calccost): Turn while-do into do-while, for clarity.
 +
 +      * keyboard.c (syms_of_keyboard): Use the same style as later
 +      in this function when indexing through an array.  This also
 +      works around GCC bug 48267.
 +
 +      * image.c (tiff_load): Fix off-by-one image count (Bug#8336).
 +
 +      * xselect.c (x_check_property_data): Return correct size (Bug#8335).
 +
 +      * chartab.c (sub_char_table_ref_and_range): Redo for slight
 +      efficiency gain, and to bypass a gcc -Wstrict-overflow warning.
 +
 +      * keyboard.c, keyboard.h (num_input_events): Now size_t.
 +      This avoids undefined behavior on integer overflow, and is a bit
 +      more convenient anyway since it is compared to a size_t variable.
 +
 +      Variadic C functions now count arguments with size_t, not int.
 +      This avoids an unnecessary limitation on 64-bit machines, which
 +      caused (substring ...) to crash on large vectors (Bug#8344).
 +      * lisp.h (struct Lisp_Subr.function.aMANY): Now takes size_t, not int.
 +      (DEFUN_ARGS_MANY, internal_condition_case_n, safe_call): Likewise.
 +      All variadic functions and their callers changed accordingly.
 +      (struct gcpro.nvars): Now size_t, not int.  All uses changed.
 +      * data.c (arith_driver, float_arith_driver): Likewise.
 +      * editfns.c (general_insert_function): Likewise.
 +      * eval.c (struct backtrace.nargs, interactive_p)
 +      (internal_condition_case_n, run_hook_with_args, apply_lambda)
 +      (funcall_lambda, mark_backtrace): Likewise.
 +      * fns.c (concat): Likewise.
 +      * frame.c (x_set_frame_parameters): Likewise.
 +      * fns.c (get_key_arg): Now accepts and returns size_t, and returns
 +      0 if not found, not -1.  All callers changed.
 +
 +      * alloc.c (garbage_collect): Don't assume stack size fits in int.
 +      (stack_copy_size): Now size_t, not int.
 +      (stack_copy, stack_copy_size): Define only if MAX_SAVE_STACK > 0.
 +
 +2011-03-28  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * coding.c (encode_designation_at_bol): Remove parameter `charbuf_end',
 +      unused since 2002-03-01T01:17:24Z!handa@m17n.org and 2008-02-01T16:01:31Z!miles@gnu.org.
 +      All callers changed.
 +
 +      * lisp.h (multibyte_char_to_unibyte):
 +      * character.c (multibyte_char_to_unibyte): Remove parameter `rev_tbl',
 +      unused since 2002-03-01T01:16:34Z!handa@m17n.org and 2008-02-01T16:01:31Z!miles@gnu.org.
 +      * character.h (CHAR_TO_BYTE8):
 +      * cmds.c (internal_self_insert):
 +      * editfns.c (general_insert_function):
 +      * keymap.c (push_key_description):
 +      * search.c (Freplace_match):
 +      * xdisp.c (message_dolog, set_message_1): All callers changed.
 +
 +2011-03-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * keyboard.c (safe_run_hook_funcall): New function.
 +      (safe_run_hooks_1, safe_run_hooks_error, safe_run_hooks): On error,
 +      don't set the hook to nil, but remove the offending function instead.
 +      (Qcommand_hook_internal): Remove, unused.
 +      (syms_of_keyboard): Don't initialize Qcommand_hook_internal nor define
 +      Vcommand_hook_internal.
 +
 +      * eval.c (enum run_hooks_condition): Remove.
 +      (funcall_nil, funcall_not): New functions.
 +      (run_hook_with_args): Call each function through a `funcall' argument.
 +      Remove `cond' argument, now redundant.
 +      (Frun_hooks, Frun_hook_with_args, Frun_hook_with_args_until_success)
 +      (Frun_hook_with_args_until_failure): Adjust accordingly.
 +      (run_hook_wrapped_funcall, Frun_hook_wrapped): New functions.
 +
 +2011-03-28  Juanma Barranquero  <lekktu@gmail.com>
 +
 +      * dispextern.h (string_buffer_position): Remove declaration.
 +
 +      * print.c (strout): Remove parameter `multibyte', unused since
 +      1999-08-21T19:30:21Z!gerd@gnu.org.  All callers changed.
 +
 +      * search.c (boyer_moore): Remove parameters `len', `pos' and `lim',
 +      never used since function introduction in 1998-02-08T21:33:56Z!rms@gnu.org.
 +      All callers changed.
 +
 +      * w32.c (_wsa_errlist): Use braces for struct initializers.
 +
 +      * xdisp.c (string_buffer_position_lim): Remove parameter `w',
 +      never used since function introduction in 2001-03-09T18:41:50Z!gerd@gnu.org.
 +      All callers changed.
 +      (string_buffer_position): Likewise.  Also, make static (it's never
 +      used outside xdisp.c).
 +      (cursor_row_p): Remove parameter `w', unused since
 +      2000-10-17T16:08:57Z!gerd@gnu.org.  All callers changed.
 +      (decode_mode_spec): Remove parameter `precision', introduced during
 +      Gerd Moellmann's rewrite at 1999-07-21T21:43:52Z!gerd@gnu.org, but never used.
 +      All callers changed.
 +
 +2011-03-27  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsterm.m (syms_of_nsterm): Use doc: for ns-auto-hide-menu-bar.
 +
 +2011-03-27  Anders Lindgren  <andlind@gmail.com>
 +
 +      * nsterm.m (ns_menu_bar_is_hidden): New variable.
 +      (ns_constrain_all_frames, ns_menu_bar_should_be_hidden)
 +      (ns_update_auto_hide_menu_bar): New functions.
 +      (ns_update_begin): Call ns_update_auto_hide_menu_bar.
 +      (applicationDidBecomeActive): Call ns_update_auto_hide_menu_bar and
 +      ns_constrain_all_frames.
 +      (constrainFrameRect): Return at once if ns_menu_bar_should_be_hidden.
 +      (syms_of_nsterm): DEFVAR ns-auto-hide-menu-bar, init to Qnil.
 +
 +2011-03-27  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * nsmenu.m (runDialogAt): Remove argument to timer_check.
 +
 +2011-03-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * syssignal.h: Replace RETSIGTYPE with void.
 +      * atimer.c, data.c, dispnew.c, emacs.c, floatfns.c, keyboard.c:
 +      * keyboard.h, lisp.h, process.c, sysdep.c, xterm.c:
 +      Replace SIGTYPE with void everywhere.
 +      * s/usg5-4-common.h (SIGTYPE): Remove definition.
 +      * s/template.h (SIGTYPE): Remove commented out definition.
  
  2011-03-26  Eli Zaretskii  <eliz@gnu.org>
  
diff --cc src/xdisp.c
Simple merge