X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/727e958ef0548f3d8ce02a4a971247f52cc548ce..e46bb31a9f62b157947257b444fb44b1f9a42db6:/src/ChangeLog diff --git a/src/ChangeLog b/src/ChangeLog index 37fd595e27..0c3028fb94 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,149 @@ +2011-06-08 Paul Eggert + + * 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. + +2011-06-07 Paul Eggert + + * character.c (string_escape_byte8): Fix nbytes/nchars typo. + + * alloc.c (Fmake_string): Check for out-of-range init. + +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. + (slurp_file): Check that file size fits in both size_t (for + malloc) and ptrdiff_t (for sanity and safety). + + * fileio.c (Fverify_visited_file_modtime): Avoid time overflow + if b->modtime has its maximal value. + + * dired.c (Ffile_attributes): Don't assume EMACS_INT has >32 bits. + + Don't assume time_t can fit into int. + * buffer.h (struct buffer.modtime): Now time_t, not int. + * fileio.c (Fvisited_file_modtime): No need for time_t cast now. + * undo.c (Fprimitive_undo): Use time_t, not int, for time_t value. + + Minor fixes for signed vs unsigned integers. + * character.h (MAYBE_UNIFY_CHAR): + * charset.c (maybe_unify_char): + * keyboard.c (read_char, reorder_modifiers): + XINT -> XFASTINT, since the integer must be nonnegative. + * ftfont.c (ftfont_spec_pattern): + * keymap.c (access_keymap, silly_event_symbol_error): + XUINT -> XFASTINT, since the integer must be nonnegative. + (Fsingle_key_description, preferred_sequence_p): XUINT -> XINT, + since it makes no difference and we prefer signed. + * keyboard.c (record_char): Use XUINT when all the neighbors do. + (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, @@ -28,8 +174,8 @@ 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. + (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. @@ -68,8 +214,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). @@ -97,8 +243,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 @@ -109,8 +255,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. @@ -128,8 +274,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. @@ -146,8 +292,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. @@ -158,8 +304,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.