merge trunk
authorKenichi Handa <handa@m17n.org>
Thu, 19 May 2011 00:37:36 +0000 (09:37 +0900)
committerKenichi Handa <handa@m17n.org>
Thu, 19 May 2011 00:37:36 +0000 (09:37 +0900)
1  2 
src/ChangeLog

diff --cc src/ChangeLog
 +2011-05-18  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.c (CHAR_COMPOSABLE_P): Add more check for efficiency.
 +      (BACKWARD_CHAR): Wrap the arg STOP by parenthesis.
 +      (find_automatic_composition): Mostly rewrite for efficiency.
 +
+ 2011-05-18  Juanma Barranquero  <lekktu@gmail.com>
+       * makefile.w32-in: Update dependencies.
+ 2011-05-18  Christoph Scholtes  <cschol2112@googlemail.com>
+       * menu.c: Include limits.h (fixes the MS-Windows build broken by
+       revision 104625).
+ 2011-05-18  Paul Eggert  <eggert@cs.ucla.edu>
+       Fix some integer overflow issues, such as string length overflow.
+       * insdel.c (count_size_as_multibyte): Check for string overflow.
+       * character.c (lisp_string_width): Check for string overflow.
+       Use EMACS_INT, not int, for string indexes and lengths; in
+       particular, 2nd arg is now EMACS_INT, not int.  Do not crash if
+       the resulting string length overflows an EMACS_INT; instead,
+       report a string overflow if no precision given.  When checking for
+       precision exhaustion, use a check that cannot possibly have
+       integer overflow.  (Bug#8675)
+       * character.h (lisp_string_width): Adjust to new signature.
+       * alloc.c (string_overflow): New function.
+       (Fmake_string): Use it.  This doesn't change behavior, but saves
+       a few bytes and will simplify future changes.
+       * character.c (string_escape_byte8): Likewise.
+       * lisp.h (string_overflow): New decl.
+       Fixups, following up to the user-interface timestamp change.
+       * nsterm.m (last_mouse_movement_time, ns_mouse_position): Use Time
+       for UI timestamps, instead of unsigned long.
+       * msdos.c (mouse_get_pos): Likewise.
+       * w32inevt.c (movement_time, w32_console_mouse_position): Likewise.
+       * w32gui.h (Time): Define by including "systime.h" rather than by
+       declaring it ourselves.  (Bug#8664)
+       * dispextern.h (struct image): Don't assume time_t <= unsigned long.
+       * image.c (clear_image_cache): Likewise.
+       * term.c (term_mouse_position): Don't assume time_t wraparound.
+       Be more systematic about user-interface timestamps.
+       Before, the code sometimes used 'Time', sometimes 'unsigned long',
+       and sometimes 'EMACS_UINT', to represent these timestamps.  This
+       change causes it to use 'Time' uniformly, as that's what X uses.
+       This makes the code easier to follow, and makes it easier to catch
+       integer overflow bugs such as Bug#8664.
+       * frame.c (Fmouse_position, Fmouse_pixel_position):
+       Use Time, not unsigned long, for user-interface timestamps.
+       * keyboard.c (last_event_timestamp, kbd_buffer_get_event): Likewise.
+       (button_down_time, make_lispy_position, make_lispy_movement): Likewise.
+       * keyboard.h (last_event_timestamp): Likewise.
+       * menu.c (Fx_popup_menu) [!HAVE_X_WINDOWS]: Likewise.
+       * menu.h (xmenu_show): Likewise.
+       * term.c (term_mouse_position): Likewise.
+       * termhooks.h (struct input_event.timestamp): Likewise.
+       (struct terminal.mouse_position_hook): Likewise.
+       * xmenu.c (create_and_show_popup_menu, xmenu_show): Likewise.
+       * xterm.c (XTmouse_position, x_scroll_bar_report_motion): Likewise.
+       * systime.h (Time): New decl.  Pull it in from <X11/X.h> if
+       HAVE_X_WINDOWS, otherwise define it as unsigned long, which is
+       what it was before.
+       * menu.h, termhooks.h: Include "systime.h", for Time.
+       * keyboard.c (make_lispy_event): Fix problem in integer overflow.
+       Don't assume that the difference between two unsigned long values
+       can fit into an integer.  At this point, we know button_down_time
+       <= event->timestamp, so the difference must be nonnegative, so
+       there's no need to cast the result if double-click-time is
+       nonnegative, as it should be; check that it's nonnegative, just in
+       case.  This bug is triggered when events are more than 2**31 ms
+       apart (about 25 days).  (Bug#8664)
+       * xselect.c (last_event_timestamp): Remove duplicate decl.
+       (x_own_selection): Remove needless cast to unsigned long.
+       * xmenu.c (set_frame_menubar): Use int, not EMACS_UINT, for indexes
+       that always fit in int.  Use a sentinel instead of a counter, to
+       avoid a temp and to allay GCC's concerns about possible int overflow.
+       * frame.h (struct frame): Use int for menu_bar_items_used
+       instead of EMACS_INT, since it always fits in int.
+       * menu.c (grow_menu_items): Check for int overflow.
+       * xmenu.c (set_frame_menubar): Don't mishandle vectors with no nils.
+       * xterm.c: Use EMACS_INT for Emacs modifiers, and int for X modifiers.
+       Before, the code was not consistent.  These values cannot exceed
+       2**31 - 1 so there's no need to make them unsigned.
+       (x_x_to_emacs_modifiers): Accept int and return EMACS_INT.
+       (x_emacs_to_x_modifiers): Accept EMACS_INT and return int.
+       (x_x_to_emacs_modifiers, x_emacs_to_x_modifiers): Reject non-integers
+       as modifiers.
+       * xterm.h (x_x_to_emacs_modifiers): Adjust to signature change.
+       * lisp.h (XINT) [USE_LISP_UNION_TYPE]: Cast to EMACS_INT.
+       (XUINT) [USE_LISP_UNION_TYPE]: Cast to EMACS_UINT.
+       Otherwise, GCC 4.6.0 warns about printf (pI, XINT (...)),
+       presumably because the widths might not match.
+       * window.c (size_window): Avoid needless test at loop start.
+ 2011-05-18  Courtney Bane  <emacs-bugs-7626@cbane.org>  (tiny change)
+       * term.c (Fresume_tty): Restore hooks before reinitializing (bug#8687).
  2011-05-12  Drew Adams  <drew.adams@oracle.com>
  
        * textprop.c (Fprevious_single_char_property_change): Doc fix (bug#8655).