From: Eli Zaretskii Date: Mon, 11 Apr 2011 16:39:09 +0000 (+0300) Subject: Fix bug #8468 with redisplay and scroll-margin > 0. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~283^2~22 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e896f03ce08aef5fbd6b4d8de84f79a157f1422f;p=emacs.git Fix bug #8468 with redisplay and scroll-margin > 0. 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. --- e896f03ce08aef5fbd6b4d8de84f79a157f1422f diff --cc src/ChangeLog index 242752cd777,c164c6b5f58..6e54c45453c --- a/src/ChangeLog +++ b/src/ChangeLog @@@ -1,670 -1,35 +1,676 @@@ + 2011-04-11 Eli Zaretskii + + * 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. ++ is outside the buffer's accessible region. (Bug#8468) + -2011-03-30 Eli Zaretskii +2011-04-10 Eli Zaretskii - * xdisp.c (syms_of_xdisp) : 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 + + * 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 . + (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 + + 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 + + * image.c (Fimagemagick_types): Doc fix, and comment cleanup. + +2011-04-09 Chong Yidong + + * 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 + + 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) + : Declare EMACS_INT. + (decode_coding_iso_2022, decode_coding_emacs_mule) + (decode_coding_sjis, decode_coding_big5, decode_coding_charset) + : 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) : + 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) : Declare EMACS_INT. + All users changed. + + * ccl.c (Fccl_execute_on_string): Declare some variables + EMACS_INT. + +2011-04-08 Samuel Thibault (tiny change) + + * term.c (init_tty): Fix incorrect ifdef placement (Bug#8450). + +2011-03-19 Christoph Scholtes + + * process.c (Fformat_network_address): Doc fix. + +2011-04-08 T.V. Raman (tiny change) + + * xml.c (parse_region): Avoid creating spurious whiespace nodes. + +2011-04-08 Chong Yidong + + * 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 + + * process.c (Flist_processes): Removed to Lisp. + (list_processes_1): Deleted. + +2011-04-06 Eli Zaretskii + + * msdos.c (careadlinkat, careadlinkatcwd): MS-DOS replacements. + + * w32.c (careadlinkat, careadlinkatcwd): New always-fail stubs. + +2011-04-06 Paul Eggert + + 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 + * 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 + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * eval.c (unwind_to_catch) [DEBUG_GCPRO]: Remove redundant assignment. + +2011-04-02 Jan Djärv + + * nsterm.m (ns_update_auto_hide_menu_bar): Only for OSX 10.6 or + later (Bug#8403). + +2011-04-01 Stefan Monnier + + 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 + + * xdisp.c (redisplay_internal): Fix prototype. + +2011-03-31 Eli Zaretskii + + * 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) : Document the + threshold of 100 lines for never-recentering scrolling. + +2011-03-31 Juanma Barranquero + + * 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 + + * 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 +2011-03-30 Zachary Kanfer (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 + + 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 + + * 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 + + * 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 + + * 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 + + * nsterm.m (syms_of_nsterm): Use doc: for ns-auto-hide-menu-bar. + +2011-03-27 Anders Lindgren + + * 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 + + * nsmenu.m (runDialogAt): Remove argument to timer_check. + +2011-03-27 Glenn Morris + + * 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