X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/dd52fcea063f37a9875bf9196dbe11a442e8adfc..78cf1fe8a256ffc91533b43eb851bf4519e9fbcc:/src/ChangeLog diff --git a/src/ChangeLog b/src/ChangeLog index 7fb1479e54..82fd352678 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,347 @@ +2011-06-11 Paul Eggert + + * xmenu.c (dialog_selection_callback) [!USE_GTK]: Cast to intptr_t, + not to EMACS_INT, to avoid GCC warning. + + * xfns.c (x_set_scroll_bar_default_width): Remove unused 'int' locals. + + * buffer.h (PTR_BYTE_POS, BUF_PTR_BYTE_POS): Remove harmful cast. + The cast incorrectly truncated 64-bit byte offsets to 32 bits, and + isn't needed on 32-bit machines. + + * buffer.c (Fgenerate_new_buffer_name): Use EMACS_INT for count, not int. + (advance_to_char_boundary): Return EMACS_INT, not int. + + * data.c (Qcompiled_function): Now static. + + * window.c (window_body_lines): Now static. + + * image.c (gif_load): Rename local to avoid shadowing. + + * lisp.h (SAFE_ALLOCA_LISP): Check for integer overflow. + (struct Lisp_Save_Value): Use ptrdiff_t, not int, for 'integer' member. + * alloc.c (make_save_value): Integer argument is now of type + ptrdiff_t, not int. + (mark_object): Use ptrdiff_t, not int. + * lisp.h (pD): New macro. + * print.c (print_object): Use it. + + * alloc.c: Use EMACS_INT, not int, to count objects. + (total_conses, total_markers, total_symbols, total_vector_size) + (total_free_conses, total_free_markers, total_free_symbols) + (total_free_floats, total_floats, total_free_intervals, total_intervals) + (total_strings, total_free_strings): + Now EMACS_INT, not int. All uses changed. + (Fgarbage_collect): Compute overall total using a double, so that + integer overflow is less likely to be a problem. Check for overflow + when converting back to an integer. + (n_interval_blocks, n_string_blocks, n_float_blocks, n_cons_blocks) + (n_vectors, n_symbol_blocks, n_marker_blocks): Remove. + These were 'int' variables that could overflow on 64-bit hosts; + they were never used, so remove them instead of repairing them. + (nzombies, ngcs, max_live, max_zombies): Now EMACS_INT, not 'int'. + (inhibit_garbage_collection): Set gc_cons_threshold to max value. + Previously, this ceilinged at INT_MAX, but that doesn't work on + 64-bit machines. + (allocate_pseudovector): Don't use EMACS_INT when int would do. + + * alloc.c (Fmake_bool_vector): Don't assume vector size fits in int. + (allocate_vectorlike): Check for ptrdiff_t overflow. + (mark_vectorlike, mark_char_table, mark_object): Avoid EMACS_UINT + when a (possibly-narrower) signed value would do just as well. + We prefer using signed arithmetic, to avoid comparison confusion. + + * alloc.c: Catch some string size overflows that we were missing. + (XMALLOC_OVERRUN_CHECK_SIZE) [!XMALLOC_OVERRUN_CHECK]: Define to 0, + for convenience in STRING_BYTES_MAX. + (STRING_BYTES_MAX): New macro, superseding the old one in lisp.h. + The definition here is exact; the one in lisp.h was approximate. + (allocate_string_data): Check for string overflow. This catches + some instances we weren't catching before. Also, it catches + size_t overflow on (unusual) hosts where SIZE_MAX <= min + (PTRDIFF_MAX, MOST_POSITIVE_FIXNUM), e.g., when size_t is 32 bits + and ptrdiff_t and EMACS_INT are both 64 bits. + + * character.c, coding.c, doprnt.c, editfns.c, eval.c: + All uses of STRING_BYTES_MAX replaced by STRING_BYTES_BOUND. + * lisp.h (STRING_BYTES_BOUND): Renamed from STRING_BYTES_MAX. + + * character.c (string_escape_byte8): Fix nbytes/nchars typo. + + * alloc.c (Fmake_string): Check for out-of-range init. + +2011-06-11 Chong Yidong + + * dispextern.h (struct image): Replace data member, whose int_val + and ptr_val fields were not used by anything, with a single + lisp_val object. + + * image.c (Fimage_metadata, make_image, mark_image, tiff_load) + (gif_clear_image, gif_load, imagemagick_load_image) + (gs_clear_image, gs_load): Callers changed. + +2011-06-10 Paul Eggert + + * buffer.h: Include , for time_t. + Needed to build on FreeBSD 8.2. Problem reported by Herbert J. Skuhra. + + Fix minor problems found by static checking. + + * image.c (PixelGetMagickColor): Declare if ImageMagick headers don't. + + Make identifiers static if they are not used in other modules. + * data.c (Qcompiled_function, Qframe, Qvector): + * image.c (QimageMagick, Qsvg): + * minibuf.c (Qmetadata): + * window.c (resize_window_check, resize_root_window): Now static. + * window.h (resize_window_check, resize_root_window): Remove decls. + + * window.c (window_deletion_count, delete_deletable_window): + Remove; unused. + (window_body_lines): Now static. + (Fdelete_other_windows_internal): Mark vars as initialized. + Make sure 'resize_failed' is initialized. + (run_window_configuration_change_hook): Rename local to avoid shadowing. + (resize_window_apply): Remove unused local. + * window.h (delete_deletable_window): Remove decl. + + * image.c (gif_load, svg_load_image): Rename locals to avoid shadowing. + (imagemagick_load_image): Fix pointer signedness problem by changing + last arg from unsigned char * to char *. All uses changed. + Also, fix a local for similar reasons. + Remove unused locals. Remove locals to avoid shadowing. + (fn_rsvg_handle_free): Remove; unused. + (svg_load, svg_load_image): Fix pointer signedness problem. + (imagemagick_load_image): Don't use garbage pointer image_wand. + + * ftfont.c (ftfont_get_metrics, ftfont_drive_otf): Remove unused locals. + +2011-06-10 Chong Yidong + + * image.c (gif_load): Fix omitted cast error introduced by + 2011-06-06 change. + +2011-06-10 Martin Rudalics + + * window.h (resize_proportionally, orig_total_lines) + (orig_top_line): Remove from window structure. + (set_window_height, set_window_width, change_window_heights) + (Fdelete_window): Remove prototypes. + (resize_frame_windows): Remove duplicate declaration. + +2011-06-10 Eli Zaretskii + + * window.h (resize_frame_windows, resize_window_check) + (delete_deletable_window, resize_root_window) + (resize_frame_windows): Declare prototypes. + + * window.c (resize_window_apply): Make definition be "static" to + match the prototype. + +2011-06-10 Martin Rudalics + + * window.c: Remove declarations of Qwindow_size_fixed, + window_min_size_1, window_min_size_2, window_min_size, + size_window, window_fixed_size_p, enlarge_window, delete_window. + Remove static from declaration of Qdelete_window, it's + temporarily needed by Fbury_buffer. + (replace_window): Don't assign orig_top_line and + orig_total_lines. + (Fdelete_window, delete_window): Remove. Window deletion is + handled by window.el. + (window_loop): Remove DELETE_OTHER_WINDOWS case. Replace + Fdelete_window calls with calls to Qdelete_window. + (Fdelete_other_windows): Remove. Deleting other windows is + handled by window.el. + (window_fixed_size_p): Remove. Fixed-sizeness of windows is + handled in window.el. + (window_min_size_2, window_min_size_1, window_min_size): Remove. + Window minimum sizes are handled in window.el. + (shrink_windows, size_window, set_window_height) + (set_window_width, change_window_heights, window_height) + (window_width, CURBEG, CURSIZE, enlarge_window) + (adjust_window_trailing_edge, Fadjust_window_trailing_edge) + (Fenlarge_window, Fshrink_window): Remove. Window resizing is + handled in window.el. + (make_dummy_parent): Rename to make_parent_window and give it a + second argument horflag. + (make_window): Don't set resize_proportionally any more. + (Fsplit_window): Remove. Windows are split in window.el. + (save_restore_action, save_restore_orig_size) + (shrink_window_lowest_first, save_restore_orig_size): Remove. + Resize mini windows in window.el. + (grow_mini_window, shrink_mini_window): Implement by calling + Qresize_root_window_vertically, resize_window_check and + resize_window_apply. + (saved_window, Fset_window_configuration, save_window_save): Do + not handle orig_top_line, orig_total_lines, and + resize_proportionally. + (window_min_height, window_min_width): Move to window.el. + (keys_of_window): Move bindings for delete-other-windows, + split-window, delete-window and enlarge-window to window.el. + + * buffer.c: Temporarily extern Qdelete_window. + (Fbury_buffer): Temporarily call Qdelete_window instead of + Fdelete_window (Fbury_buffer will move to window.el soon). + + * frame.c (set_menu_bar_lines_1): Remove code handling + orig_top_line and orig_total_lines. + + * dispnew.c (adjust_frame_glyphs_initially): Don't use + set_window_height but set heights directly. + (change_frame_size_1): Use resize_frame_windows. + + * xdisp.c (init_xdisp): Don't use set_window_height but set + heights directly. + + * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines): Use + resize_frame_windows instead of change_window_heights and run + run_window_configuration_change_hook. + + * w32fns.c (x_set_tool_bar_lines): Use resize_frame_windows + instead of change_window_heights and run + run_window_configuration_change_hook. + +2011-06-09 Martin Rudalics + + * window.c (replace_window): Rename second argument REPLACEMENT to + NEW. New third argument SETFLAG. Rewrite. + (delete_window, make_dummy_parent): Call replace_window with + third argument 1. + (window_list_1): Move down in code. + (run_window_configuration_change_hook): Move set_buffer part + before select_frame_norecord part in order to unwind correctly. + Rename count1 to count. + (recombine_windows, delete_deletable_window, resize_root_window) + (Fdelete_other_windows_internal) + (Frun_window_configuration_change_hook, make_parent_window) + (resize_window_check, resize_window_apply, Fresize_window_apply) + (resize_frame_windows, Fsplit_window_internal) + (Fdelete_window_internal, Fresize_mini_window_internal): New + functions. + (syms_of_window): New variables Vwindow_splits and Vwindow_nest. + +2011-06-08 Martin Rudalics + + * window.h (window): Add some new members to window structure - + normal_lines, normal_cols, new_total, new_normal, clone_number, + splits, nest, prev_buffers, next_buffers. + (WINDOW_TOTAL_SIZE): Move here from window.c. + (MIN_SAFE_WINDOW_WIDTH, MIN_SAFE_WINDOW_HEIGHT): Define here. + + * window.c (Fwindow_height, Fwindow_width, Fwindow_full_width_p): + Remove. + (make_dummy_parent): Set new members of windows structure. + (make_window): Move down in code. Handle new members of window + structure. + (Fwindow_clone_number, Fwindow_splits, Fset_window_splits) + (Fwindow_nest, Fset_window_nest, Fwindow_new_total) + (Fwindow_normal_size, Fwindow_new_normal, Fwindow_prev_buffers) + (Fset_window_prev_buffers, Fwindow_next_buffers) + (Fset_window_next_buffers, Fset_window_clone_number): New + functions. + (Fwindow_hscroll, Fwindow_at, Fwindow_point, Fwindow_start) + (Fwindow_end, Fwindow_line_height, Fset_window_dedicated_p): + Doc-string fixes. + (Fwindow_parameters, Fwindow_parameter, Fset_window_parameter): + Argument WINDOW can be now internal window too. + (Fwindow_use_time): Move up in code. + (Fget_buffer_window): Rename argument FRAME to ALL-FRAMES. + Rewrite doc-string. + (Fset_window_configuration, saved_window) + (Fcurrent_window_configuration, save_window_save): Handle new + members of window structure. + (WINDOW_TOTAL_SIZE, MIN_SAFE_WINDOW_WIDTH) + (MIN_SAFE_WINDOW_HEIGHT): Move to window.h. + (syms_of_window): New Lisp objects Qrecord_window_buffer, + Qwindow_deletable_p, Qdelete_window, Qreplace_buffer_in_windows, + Qget_mru_window, Qresize_root_window, + Qresize_root_window_vertically, Qsafe, Qabove, Qbelow, + Qauto_buffer_name; staticpro them. + +2011-06-07 Martin Rudalics + + * window.c (Fwindow_total_size, Fwindow_left_column) + (Fwindow_top_line, window_body_lines, Fwindow_body_size) + (Fwindow_list_1): New functions. + (window_box_text_cols): Replace with window_body_cols. + (Fwindow_width, Fscroll_left, Fscroll_right): Use + window_body_cols instead of window_box_text_cols. + (delete_window, Fset_window_configuration): Call + delete_all_subwindows with window as argument. + (delete_all_subwindows): Take a window as argument and not a + structure. Rewrite. + (window_loop): Remove handling of GET_LRU_WINDOW and + GET_LARGEST_WINDOW. + (Fget_lru_window, Fget_largest_window): Move to window.el. + + * window.h: Extern window_body_cols instead of + window_box_text_cols. delete_all_subwindows now takes a + Lisp_Object as argument. + + * indent.c (compute_motion, Fcompute_motion): Use + window_body_cols instead of window_box_text_cols. + + * frame.c (delete_frame): Call delete_all_subwindows with root + window as argument. + +2011-06-07 Daniel Colascione + + * fns.c (Fputhash): Document return value. + +2011-06-06 Chong Yidong + + * image.c (gif_load): Implement gif89a spec "no disposal" method. + 2011-06-06 Paul Eggert + Cons<->int and similar integer overflow fixes (Bug#8794). + + Check for overflow when converting integer to cons and back. + * charset.c (Fdefine_charset_internal, Fdecode_char): + Use cons_to_unsigned to catch overflow. + (Fencode_char): Use INTEGER_TO_CONS. + * composite.h (LGLYPH_CODE): Use cons_to_unsigned. + (LGLYPH_SET_CODE): Use INTEGER_TO_CONS. + * data.c (long_to_cons, cons_to_long): Remove. + (cons_to_unsigned, cons_to_signed): New functions. + These signal an error for invalid or out-of-range values. + * dired.c (Ffile_attributes): Use INTEGER_TO_CONS. + * fileio.c (Fset_visited_file_modtime): Use CONS_TO_INTEGER. + * font.c (Ffont_variation_glyphs): + * fontset.c (Finternal_char_font): Use INTEGER_TO_CONS. + * lisp.h: Include . + (INTEGER_TO_CONS, CONS_TO_INTEGER): New macros. + (cons_to_signed, cons_to_unsigned): New decls. + (long_to_cons, cons_to_long): Remove decls. + * undo.c (record_first_change): Use INTEGER_TO_CONS. + (Fprimitive_undo): Use CONS_TO_INTEGER. + * xfns.c (Fx_window_property): Likewise. + * xselect.c: Include . + (x_own_selection, selection_data_to_lisp_data): + Use INTEGER_TO_CONS. + (x_handle_selection_request, x_handle_selection_clear) + (x_get_foreign_selection, Fx_disown_selection_internal) + (Fx_get_atom_name, x_send_client_event): Use CONS_TO_INTEGER. + (lisp_data_to_selection_data): Use cons_to_unsigned. + (x_fill_property_data): Use cons_to_signed. + Report values out of range. + + Check for buffer and string overflow more precisely. + * buffer.h (BUF_BYTES_MAX): New macro. + * lisp.h (STRING_BYTES_MAX): New macro. + * alloc.c (Fmake_string): + * character.c (string_escape_byte8): + * coding.c (coding_alloc_by_realloc): + * doprnt.c (doprnt): + * editfns.c (Fformat): + * eval.c (verror): + Use STRING_BYTES_MAX, not MOST_POSITIVE_FIXNUM, + since they may not be the same number. + * editfns.c (Finsert_char): + * fileio.c (Finsert_file_contents): + Likewise for BUF_BYTES_MAX. + * image.c: Use ptrdiff_t, not int, for sizes. (slurp_file): Switch from int to ptrdiff_t. All uses changed. @@ -30,6 +372,52 @@ (access_keymap): NATNUMP -> INTEGERP, since the integer must be nonnegative. +2011-06-06 Stefan Monnier + + * window.h (Fwindow_frame): Declare. + +2011-06-06 Paul Eggert + + * alloc.c: Simplify handling of large-request failures (Bug#8800). + (SPARE_MEMORY): Always define. + (LARGE_REQUEST): Remove. + (memory_full): Use SPARE_MEMORY rather than LARGE_REQUEST. + +2011-06-06 Martin Rudalics + + * lisp.h: Move EXFUNS for Fframe_root_window, + Fframe_first_window and Fset_frame_selected_window to window.h. + + * window.h: Move EXFUNS for Fframe_root_window, + Fframe_first_window and Fset_frame_selected_window here from + lisp.h. + + * frame.c (Fwindow_frame, Fframe_first_window) + (Fframe_root_window, Fframe_selected_window) + (Fset_frame_selected_window): Move to window.c. + (Factive_minibuffer_window): Move to minibuf.c. + (Fother_visible_frames_p): New function. + + * minibuf.c (Factive_minibuffer_window): Move here from frame.c. + + * window.c (decode_window, decode_any_window): Move up in code. + (Fwindowp, Fwindow_live_p): Rewrite doc-strings. + (inhibit_frame_unsplittable): Remove unused variable. + (Fwindow_buffer): Move up and rewrite doc-string. + (Fwindow_parent, Fwindow_vchild, Fwindow_hchild, Fwindow_next) + (Fwindow_prev): New functions. + (Fwindow_frame): Move here from frame.c. Accept any window as + argument. + (Fframe_root_window, Fframe_first_window) + (Fframe_selected_window): Move here from frame.c. Accept frame + or arbitrary window as argument. Update doc-strings. + (Fminibuffer_window): Move up in code. + (Fwindow_minibuffer_p): Move up in code and simplify. + (Fset_frame_selected_window): Move here from frame.c. + Marginal rewrite. + (Fselected_window, select_window, Fselect_window): Move up in + code. Minor doc-string fixes. + 2011-06-06 Paul Eggert * alloc.c (memory_full) [SYSTEM_MALLOC]: Port to MacOS (Bug#8800). @@ -65,8 +453,8 @@ * xselect.c (x_clipboard_manager_save): Remove redundant arg. (x_clipboard_manager_save): Add return value. - (x_clipboard_manager_error_1, x_clipboard_manager_error_2): New - error handlers. + (x_clipboard_manager_error_1, x_clipboard_manager_error_2): + New error handlers. (x_clipboard_manager_save_frame, x_clipboard_manager_save_all): Obey Vx_select_enable_clipboard_manager. Catch errors in x_clipboard_manager_save (Bug#8779). @@ -94,8 +482,8 @@ (bidi_fetch_char, bidi_fetch_char_advance): New functions. (bidi_cache_search, bidi_cache_iterator_state) (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak) - (bidi_level_of_next_char, bidi_move_to_visually_next): Support - character positions inside a run of characters covered by a + (bidi_level_of_next_char, bidi_move_to_visually_next): + Support character positions inside a run of characters covered by a display string. (bidi_paragraph_init, bidi_resolve_explicit_1) (bidi_level_of_next_char): Call bidi_fetch_char and @@ -106,8 +494,8 @@ definitions. (bidi_explicit_dir_char): Lookup character type in bidi_type_table, instead of using explicit *_CHAR codes. - (bidi_resolve_explicit, bidi_resolve_weak): Use - FETCH_MULTIBYTE_CHAR instead of FETCH_CHAR, as reordering of + (bidi_resolve_explicit, bidi_resolve_weak): + Use FETCH_MULTIBYTE_CHAR instead of FETCH_CHAR, as reordering of bidirectional text is supported only in multibyte buffers. (bidi_init_it): Accept additional argument FRAME_WINDOW_P and use it to initialize the frame_window_p member of struct bidi_it. @@ -125,8 +513,8 @@ (single_display_spec_intangible_p): Function deleted. (display_prop_intangible_p): Reimplement to call handle_display_spec instead of single_display_spec_intangible_p. - Accept 3 additional arguments needed by handle_display_spec. This - fixes incorrect cursor motion across display property with complex + Accept 3 additional arguments needed by handle_display_spec. + This fixes incorrect cursor motion across display property with complex values: lists, `(when COND...)' forms, etc. (single_display_spec_string_p): Support property values that are lists with the argument STRING its top-level element. @@ -143,8 +531,8 @@ the display property will replace the characters it covers. (Fcurrent_bidi_paragraph_direction): Initialize the nchars and frame_window_p members of struct bidi_it. - (compute_display_string_pos, compute_display_string_end): New - functions. + (compute_display_string_pos, compute_display_string_end): + New functions. (push_it): Accept second argument POSITION, where pop_it should jump to continue iteration. (reseat_1): Initialize bidi_it.disp_pos. @@ -155,8 +543,8 @@ * dispextern.h (struct bidi_it): New member frame_window_p. (bidi_init_it): Update prototypes. (display_prop_intangible_p): Update prototype. - (compute_display_string_pos, compute_display_string_end): Declare - prototypes. + (compute_display_string_pos, compute_display_string_end): + Declare prototypes. (struct bidi_it): New members nchars and disp_pos. ch_len is now EMACS_INT.