]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge from trunk.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 13 Jun 2011 08:00:15 +0000 (01:00 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 13 Jun 2011 08:00:15 +0000 (01:00 -0700)
1  2 
src/ChangeLog
src/buffer.c
src/lisp.h
src/widget.c
src/xterm.c

diff --cc src/ChangeLog
index 125028297d13e671d5c16e76104ba07ae2117634,15b6bf6baf2c1931e047e3cc8fe4f7b025dd9c0b..6bac6f00a3fe5e0d3d4d8471d6b0d558cc6403cf
-       * xdisp.c (get_next_display_element):
-       (next_element_from_display_vector): Don't assume EMACS_INT fits in int.
 +2011-06-13  Paul Eggert  <eggert@cs.ucla.edu>
 +
 +      * xterm.c (x_alloc_nearest_color_1): Use a more-precise algorithm
 +      for nearest color, one that neither overflows nor relies on unsigned
 +      arithmetic.
 +
 +      Remove unnecessary casts.
 +      * xterm.c (x_term_init):
 +      * xfns.c (x_set_border_pixel):
 +      * widget.c (create_frame_gcs): Remove casts to unsigned long etc.
 +      These aren't needed now that we assume ANSI C.
 +
 +      * sound.c (Fplay_sound_internal): Remove cast to unsigned long.
 +      It's more likely to cause problems (due to unsigned overflow)
 +      than to cure them.
 +
 +      * dired.c (Ffile_attributes): Don't use 32-bit hack on 64-bit hosts.
 +
 +      * unexelf.c (unexec): Don't assume BSS addr fits in unsigned.
 +
 +      * xterm.c (handle_one_xevent): Omit unnecessary casts to unsigned.
 +
 +      * keyboard.c (modify_event_symbol): Don't limit alist len to UINT_MAX.
 +
 +      * lisp.h (CHAR_TABLE_SET): Omit now-redundant test.
 +
 +      * lread.c (Fload): Don't compare a possibly-garbage time_t value.
 +
 +      GLYPH_CODE_FACE returns EMACS_INT, not int.
 +      * dispextern.h (merge_faces):
 +      * xfaces.c (merge_faces):
-       * editfns.c (Fchar_to_string, general_insert_function, Finsert_char):
++      * xdisp.c (get_next_display_element, next_element_from_display_vector):
++      Don't assume EMACS_INT fits in int.
 +
 +      * character.h (CHAR_VALID_P): Remove unused parameter.
 +      * fontset.c, lisp.h, xdisp.c: All uses changed.
 +
 +      * editfns.c (Ftranslate_region_internal): Omit redundant test.
 +
 +      * fns.c (concat): Minor tuning based on overflow analysis.
 +      This doesn't fix any bugs.  Use int to hold character, instead
 +      of constantly refetching from Emacs object.  Use XFASTINT, not
 +      XINT, for value known to be a character.  Don't bother comparing
 +      a single byte to 0400, as it's always less.
 +
 +      * floatfns.c (Fexpt):
 +      * fileio.c (make_temp_name): Omit unnecessary cast to unsigned.
 +
 +      * editfns.c (Ftranslate_region_internal): Use int, not EMACS_INT
 +      for characters.
 +
 +      * doc.c (get_doc_string): Omit (unsigned)c that mishandled negatives.
 +
 +      * data.c (Faset): If ARRAY is a string, check that NEWELT is a char.
 +      Without this fix, on a 64-bit host (aset S 0 4294967386) would
 +      incorrectly succeed when S was a string, because 4294967386 was
 +      truncated before it was used.
 +
 +      * chartab.c (Fchar_table_range): Use CHARACTERP to check range.
 +      Otherwise, an out-of-range integer could cause undefined behavior
 +      on a 64-bit host.
 +
 +      * composite.c: Use int, not EMACS_INT, for characters.
 +      (fill_gstring_body, composition_compute_stop_pos): Use int, not
 +      EMACS_INT, for values that are known to be in character range.
 +      This doesn't fix any bugs but is the usual style inside Emacs and
 +      may generate better code on 32-bit machines.
 +
 +      Make sure a 64-bit char is never passed to ENCODE_CHAR.
 +      This is for reasons similar to the recent CHAR_STRING fix.
 +      * charset.c (Fencode_char): Check that character arg is actually
 +      a character.  Pass an int to ENCODE_CHAR.
 +      * charset.h (ENCODE_CHAR): Verify that the character argument is no
 +      wider than 'int', as a compile-time check to prevent future regressions
 +      in this area.
 +
 +      * character.c (char_string): Remove unnecessary casts.
 +
 +      Make sure a 64-bit char is never passed to CHAR_STRING.
 +      Otherwise, CHAR_STRING would do the wrong thing on a 64-bit platform,
 +      by silently ignoring the top 32 bits, allowing some values
 +      that were far too large to be valid characters.
 +      * character.h: Include <verify.h>.
 +      (CHAR_STRING, CHAR_STRING_ADVANCE): Verify that the character
 +      arguments are no wider than unsigned, as a compile-time check
 +      to prevent future regressions in this area.
 +      * data.c (Faset):
- 2011-06-12  Paul Eggert  <eggert@cs.ucla.edu>
++      * editfns.c (Fchar_to_string, general_insert_function, Finsert_char)
 +      (Fsubst_char_in_region):
 +      * fns.c (concat):
 +      * xdisp.c (decode_mode_spec_coding):
 +      Adjust to CHAR_STRING's new requirement.
 +      * editfns.c (Finsert_char, Fsubst_char_in_region):
 +      * fns.c (concat): Check that character args are actually
 +      characters.  Without this test, these functions did the wrong
 +      thing with wildly out-of-range values on 64-bit hosts.
 +
-       * character.h (ASCII_BYTE_P, CHAR_VALID_P):
 +      Remove incorrect casts to 'unsigned' that lose info on 64-bit hosts.
 +      These casts should not be needed on 32-bit hosts, either.
 +      * keyboard.c (read_char):
 +      * lread.c (Fload): Remove casts to unsigned.
 +
 +      * lisp.h (UNSIGNED_CMP): New macro.
 +      This fixes comparison bugs on 64-bit hosts.
 +      (ASCII_CHAR_P): Use it.
 +      * casefiddle.c (casify_object):
- 2011-06-11  Paul Eggert  <eggert@cs.ucla.edu>
++      * character.h (ASCII_BYTE_P, CHAR_VALID_P)
 +      (SINGLE_BYTE_CHAR_P, CHAR_STRING):
 +      * composite.h (COMPOSITION_ENCODE_RULE_VALID):
 +      * dispextern.h (FACE_FROM_ID):
 +      * keyboard.c (read_char): Use UNSIGNED_CMP.
 +
-       * buffer.c (Fgenerate_new_buffer_name): Use EMACS_INT for count, not int.
 +      * 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.
 +
-       (total_free_floats, total_floats, total_free_intervals, total_intervals)
-       (total_strings, total_free_strings):
++      * 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-12  Martin Rudalics  <rudalics@gmx.at>
+       * frame.c (make_frame): Call other_buffer_safely instead of
+       other_buffer.
+       * window.c (temp_output_buffer_show): Call display_buffer with
+       second argument Vtemp_buffer_show_specifiers and reset latter
+       immediately after the call.
+       (Vtemp_buffer_show_specifiers): New variable.
+       (auto_window_vscroll_p, next_screen_context_lines)
+       (Vscroll_preserve_screen_position): Remove leading asterisks from
+       doc-strings.
+ 2011-06-12  Paul Eggert  <eggert@cs.ucla.edu>
+       Fix minor problems found by GCC 4.6.0 static checking.
+       * buffer.c (Qclone_number): Remove for now, as it's unused.
+       (record_buffer, Funrecord_buffer): Rename local to avoid shadowing.
+       (record_buffer): Remove unused local.
+       * frame.c (other_visible_frames, frame_buffer_list): Now static.
+       (set_frame_buffer_list): Remove; unused.
+       * frame.h (other_visible_frames): Remove decl.
+       * keyboard.h (menu_items_inuse): Declare only if USE_GTK || USE_MOTIF.
+       * lisp.h (frame_buffer_list, set_frame_buffer_list): Remove decls.
+       (add_gpm_wait_descriptor, delete_gpm_wait_descriptor): Declare only
+       if HAVE_GPM.
+       * menu.c (menu_items_inuse): Now static unless USE_GTK || USE_MOTIF.
+       * process.c (add_gpm_wait_descriptor, delete_gpm_wait_descriptor):
+       Define only if HAVE_GPM.
+       * widget.c (EmacsFrameResize, emacsFrameClassRec): Now static.
+       (update_hints_inhibit): Remove; never set.  All uses removed.
+       * widgetprv.h (emacsFrameClassRec): Remove decl.
+       * window.c (delete_deletable_window): Now returns void, since it
+       wasn't returning anything.
+       (compare_window_configurations): Remove unused locals.
+       * xfns.c (x_set_scroll_bar_default_width): Remove unused locals.
+       * xmenu.c (x_menu_set_in_use): Define only if USE_GTK || USE_MOTIF.
+       (dialog_selection_callback) [!USE_GTK]: Prefer intptr_t for integers
+       the same widths as pointers.  This follows up on the 2011-05-06 patch.
+       * xterm.c (x_alloc_lighter_color_for_widget): Define only if USE_LUCID.
+       * xterm.h: Likewise.
+       (x_menu_set_in_use): Declare only if USE_GTK || USE_MOTIF.
+ 2011-06-12  Juanma Barranquero  <lekktu@gmail.com>
+       * makefile.w32-in: Update dependencies.
+       (LISP_H): Add lib/intprops.h.
+ 2011-06-11  Chong Yidong  <cyd@stupidchicken.com>
+       * image.c (gif_load): Add animation frame delay to the metadata.
+       (syms_of_image): Use DEFSYM.  New symbol `delay'.
+ 2011-06-11  Martin Rudalics  <rudalics@gmx.at>
+       * window.c (delete_deletable_window): Re-add.
+       (Fset_window_configuration): Rewrite to handle dead buffers and
+       consequently deletable windows.
+       (window_tree, Fwindow_tree): Remove.  Supply functionality in
+       window.el.
+       (compare_window_configurations): Simplify code.
+ 2011-06-11  Andreas Schwab  <schwab@linux-m68k.org>
+       * image.c (imagemagick_load_image): Fix type mismatch.
+       (Fimagemagick_types): Likewise.
+       * window.h (replace_buffer_in_windows): Declare.
+ 2011-06-11  Martin Rudalics  <rudalics@gmx.at>
+       * buffer.c: New Lisp objects Qbuffer_list_update_hook and
+       Qclone_number.  Remove external declaration of Qdelete_window.
+       (Fbuffer_list): Rewrite doc-string.  Minor restructuring of
+       code.
+       (Fget_buffer_create, Fmake_indirect_buffer, Frename_buffer): Run
+       Qbuffer_list_update_hook if allowed.
+       (Fother_buffer): Rewrite doc-string.  Major rewrite for new
+       buffer list implementation.
+       (other_buffer_safely): New function.
+       (Fkill_buffer): Replace call to replace_buffer_in_all_windows by
+       calls to replace_buffer_in_windows and
+       replace_buffer_in_windows_safely.  Run Qbuffer_list_update_hook
+       if allowed.
+       (record_buffer): Inhibit quitting and rewrite using quittable
+       functions.  Run Qbuffer_list_update_hook if allowed.
+       (Frecord_buffer, Funrecord_buffer): New functions.
+       (switch_to_buffer_1, Fswitch_to_buffer): Remove.  Move
+       switch-to-buffer to window.el.
+       (bury-buffer): Move to window.el.
+       (Vbuffer_list_update_hook): New variable.
+       * lisp.h (other_buffer_safely): Add prototype in buffer.c
+       section.
+       * window.h (resize_frame_windows): Move up in code.
+       (Fwindow_frame): Remove EXFUN.
+       (replace_buffer_in_all_windows): Remove prototype.
+       (replace_buffer_in_windows_safely): Add prototype.
+       * window.c: Declare Qdelete_window static again.  Move down
+       declaration of select_count.
+       (Fnext_window, Fprevious_window): Rewrite doc-strings.
+       (Fother_window): Move to window.el.
+       (window_loop): Remove DELETE_BUFFER_WINDOWS and UNSHOW_BUFFER
+       cases.  Add REPLACE_BUFFER_IN_WINDOWS_SAFELY case.
+       (Fdelete_windows_on, Freplace_buffer_in_windows): Move to
+       window.el.
+       (replace_buffer_in_windows): Implement by calling
+       Qreplace_buffer_in_windows.
+       (replace_buffer_in_all_windows): Remove with some functionality
+       moved into replace_buffer_in_windows_safely.
+       (replace_buffer_in_windows_safely): New function.
+       (select_window_norecord, select_frame_norecord): Move in front
+       of run_window_configuration_change_hook.  Remove now obsolete
+       declarations.
+       (Fset_window_buffer): Rewrite doc-string.  Call
+       Qrecord_window_buffer.
+       (keys_of_window): Move binding for other-window to window.el.
  2011-06-11  Chong Yidong  <cyd@stupidchicken.com>
  
        * dispextern.h (struct image): Replace data member, whose int_val
diff --cc src/buffer.c
Simple merge
diff --cc src/lisp.h
Simple merge
diff --cc src/widget.c
Simple merge
diff --cc src/xterm.c
Simple merge