Overflow, signedness and related fixes for images.
[bpt/emacs.git] / src / ChangeLog
index f2c318f..680e67e 100644 (file)
@@ -1,4 +1,177 @@
-2011-07-07  Paul Eggert  <eggert@cs.ucla.edu>
+2011-07-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Overflow, signedness and related fixes for images.
+
+       * dispextern.h (struct it.stack[0].u.image.image_id)
+       (struct_it.image_id, struct image.id, struct image_cache.size)
+       (struct image_cache.used, struct image_cache.ref_count):
+       * gtkutil.c (update_frame_tool_bar):
+       * image.c (x_reference_bitmap, Fimage_size, Fimage_mask_p)
+       (Fimage_metadata, free_image_cache, clear_image_cache, lookup_image)
+       (cache_image, mark_image_cache, x_kill_gs_process, Flookup_image):
+       * nsmenu.m (update_frame_tool_bar):
+       * xdisp.c (calc_pixel_width_or_height):
+       * xfns.c (image_cache_refcount):
+       Image IDs are now ptrdiff_t, not int, to avoid arbitrary limits
+       on typical 64-bit hosts.
+
+       * image.c (RANGED_INTEGERP, TYPE_RANGED_INTEGERP): New macros.
+       (x_bitmap_pixmap, x_create_x_image_and_pixmap):
+       Omit unnecessary casts to int.
+       (parse_image_spec): Check that integers fall into 'int' range
+       when the callers expect that.
+       (image_ascent): Redo ascent calculation to avoid int overflow.
+       (clear_image_cache): Avoid overflow when sqrt (INT_MAX) < nimages.
+       (lookup_image): Remove unnecessary tests.
+       (xbm_image_p): Locals are now of int, not EMACS_INT,
+       since parse_image_check makes sure they fit into int.
+       (png_load, gif_load, svg_load_image):
+       Prefer int to unsigned where either will do.
+       (tiff_handler): New function, combining the cores of the
+       old tiff_error_handler and tiff_warning_handler.  This
+       function is rewritten to use vsnprintf and thereby avoid
+       stack buffer overflows.  It uses only the features of vsnprintf
+       that are common to both POSIX and native Microsoft.
+       (tiff_error_handler, tiff_warning_handler): Use it.
+       (tiff_load, gif_load, imagemagick_load_image):
+       Don't assume :index value fits in 'int'.
+       (gif_load): Omit unnecessary cast to double, and avoid double-rounding.
+       (imagemagick_load_image): Check that crop parameters fit into
+       the integer types that MagickCropImage accepts.  Don't assume
+       Vimagemagick_render_type has a nonnegative value.  Don't assume
+       size_t fits in 'long'.
+       (gs_load): Use printmax_t to print the widest integers possible.
+       Check for integer overflow when computing image height and width.
+
+2011-07-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Integer signedness and overflow and related fixes.  (Bug#9079)
+
+       * bidi.c: Integer size and overflow fixes.
+       (bidi_cache_size, bidi_cache_idx, bidi_cache_last_idx)
+       (bidi_cache_start, bidi_cache_fetch_state, bidi_cache_search)
+       (bidi_cache_find_level_change, bidi_cache_ensure_space)
+       (bidi_cache_iterator_state, bidi_cache_find, bidi_cache_start_stack)
+       (bidi_find_other_level_edge):
+       Use ptrdiff_t instead of EMACS_INT where either will do.
+       This works better on 32-bit hosts configured --with-wide-int.
+       (bidi_cache_ensure_space): Check for size-calculation overflow.
+       Use % rather than repeated addition, for better worst-case speed.
+       Don't set bidi_cache_size until after xrealloc returns, because it
+       might not return.
+       (bidi_dump_cached_states): Use ptrdiff_t, not int, to avoid overflow.
+
+       * alloc.c (__malloc_size_t): Remove.
+       All uses replaced by size_t.  See Andreas Schwab's note
+       <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9079#8>.
+
+       * image.c: Improve checking for integer overflow.
+       (check_image_size): Assume that f is nonnull, since
+       it is always nonnull in practice.  This is one less thing to
+       worry about when checking for integer overflow later.
+       (x_check_image_size): New function, which checks for integer
+       overflow issues inside X.
+       (x_create_x_image_and_pixmap, xbm_read_bitmap_data): Use it.
+       This removes the need for a memory_full check.
+       (xbm_image_p): Rewrite to avoid integer multiplication overflow.
+       (Create_Pixmap_From_Bitmap_Data, xbm_load): Use x_check_image_size.
+       (xbm_read_bitmap_data): Change locals back to 'int', since
+       their values must fit in 'int'.
+       (xpm_load_image, png_load, tiff_load):
+       Invoke x_create_x_image_and_pixmap earlier,
+       to avoid much needless work if the image is too large.
+       (tiff_load): Treat overly large images as if
+       x_create_x_image_and_pixmap failed, not as malloc failures.
+       (gs_load): Use x_check_image_size.
+
+       * gtkutil.c: Omit integer casts.
+       (xg_get_pixbuf_from_pixmap): Remove unnecessary cast.
+       (xg_set_toolkit_scroll_bar_thumb): Rewrite to avoid need for cast.
+
+       * image.c (png_load): Don't assume height * row_bytes fits in 'int'.
+
+       * xfaces.c (Fbitmap_spec_p): Fix integer overflow bug.
+       Without this fix, (bitmap-spec-p '(34359738368 1 "x"))
+       would wrongly return t on a 64-bit host.
+
+       * dispnew.c (init_display): Use *_RANGE_OVERFLOW macros.
+       The plain *_OVERFLOW macros run afoul of GCC bug 49705
+       <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49705>
+       and therefore cause GCC to emit a bogus diagnostic in some cases.
+
+       * image.c: Integer signedness and overflow and related fixes.
+       This is not an exhaustive set of fixes, but it's time to
+       record what I've got.
+       (lookup_pixel_color, check_image_size): Remove redundant decls.
+       (check_image_size): Don't assume that arbitrary EMACS_INT values
+       fit in 'int', or that arbitrary 'double' values fit in 'int'.
+       (x_alloc_image_color, x_create_x_image_and_pixmap, png_load)
+       (tiff_load, imagemagick_load_image):
+       Check for overflow in size calculations.
+       (x_create_x_image_and_pixmap): Remove unnecessary test for
+       xmalloc returning NULL; that can't happen.
+       (xbm_read_bitmap_data): Don't assume sizes fit into 'int'.
+       (xpm_color_bucket): Use better integer hashing function.
+       (xpm_cache_color): Don't possibly over-allocate memory.
+       (struct png_memory_storage, tiff_memory_source, tiff_seek_in_memory)
+       (gif_memory_source):
+       Use ptrdiff_t, not int or size_t, to record sizes.
+       (png_load): Don't assume values greater than 2**31 fit in 'int'.
+       (our_stdio_fill_input_buffer): Prefer ptrdiff_t to size_t when
+       either works, as we prefer signed integers.
+       (tiff_read_from_memory, tiff_write_from_memory):
+       Return tsize_t, not size_t, since that's what the TIFF API wants.
+       (tiff_read_from_memory): Don't fail simply because the read would
+       go past EOF; instead, return a short read.
+       (tiff_load): Omit no-longer-needed casts.
+       (Fimagemagick_types): Don't assume size fits into 'int'.
+
+       Improve hashing quality when configured --with-wide-int.
+       * fns.c (hash_string): New function, taken from sxhash_string.
+       Do not discard information about ASCII character case; this
+       discarding is no longer needed.
+       (sxhash-string): Use it.  Change sig to match it.  Caller changed.
+       * lisp.h: Declare it.
+       * lread.c (hash_string): Remove, since we now use fns.c's version.
+       The fns.c version returns a wider integer if --with-wide-int is
+       specified, so this should help the quality of the hashing a bit.
+
+       * emacs.c: Integer overflow minor fix.
+       (heap_bss_diff): Now uprintmax_t, not unsigned long.  All used changed.
+       Define only if GNU_LINUX.
+       (main, Fdump_emacs): Set and use heap_bss_diff only if GNU_LINUX.
+
+       * dispnew.c: Integer signedness and overflow fixes.
+       Remove unnecessary forward decls, that were a maintenance hassle.
+       (history_tick): Now uprintmax_t, so it's more likely to avoid overflow.
+       All uses changed.
+       (adjust_glyph_matrix, realloc_glyph_pool, adjust_frame_message_buffer)
+       (scrolling_window): Use ptrdiff_t, not int, for byte count.
+       (prepare_desired_row, line_draw_cost):
+       Use int, not unsigned, where either works.
+       (save_current_matrix, restore_current_matrix):
+       Use ptrdiff_t, not size_t, where either works.
+       (init_display): Check for overflow more accurately, and without
+       relying on undefined behavior.
+
+       * editfns.c (pWIDE, pWIDElen, signed_wide, unsigned_wide):
+       Remove, replacing with the new symbols in lisp.h.  All uses changed.
+       * fileio.c (make_temp_name):
+       * filelock.c (lock_file_1, lock_file):
+       * xdisp.c (message_dolog):
+       Don't assume PRIdMAX etc. works; this isn't portable to pre-C99 hosts.
+       Use pMd etc. instead.
+       * lisp.h (printmax_t, uprintmax_t, pMd, pMu): New types and macros,
+       replacing the pWIDE etc. symbols removed from editfns.c.
+
+       * keyboard.h (num_input_events): Now uintmax_t.
+       This is (very slightly) less likely to mess up due to wraparound.
+       All uses changed.
+
+       * buffer.c: Integer signedness fixes.
+       (alloc_buffer_text, enlarge_buffer_text):
+       Use ptrdiff_t rather than size_t when either will do, as we prefer
+       signed integers.
 
        * alloc.c: Integer signedness and overflow fixes.
        Do not impose an arbitrary 32-bit limit on malloc sizes when debugging.
        (STDC_HEADERS): Remove obsolete defines.
        * sysdep.c: Include limits.h unconditionally.
 
-2011-07-06  Paul Eggert  <eggert@cs.ucla.edu>
-
        Assume support for memcmp, memcpy, memmove, memset.
        * lisp.h, sysdep.c (memcmp, memcpy, memmove, memset):
        * regex.c (memcmp, memcpy):
        * gmalloc.c (memcpy, memset, memmove): Remove; we assume C89 now.
        (__malloc_safe_bcopy): Remove; no longer needed.
 
-       * lisp.h (struct vectorlike_header, struct Lisp_Subr):  Signed sizes.
+       * lisp.h (struct vectorlike_header, struct Lisp_Subr): Signed sizes.
        Use EMACS_INT, not EMACS_UINT, for sizes.  The code works equally
        well either way, and we prefer signed to unsigned.
 
+2011-07-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix minor problems found by static checking.
+       * bidi.c (bidi_cache_size): Now EMACS_INT, not size_t.
+       (elsz): Now a signed constant, not a size_t var.  We prefer signed
+       types to unsigned, to avoid integer comparison confusion.  Without
+       this change, GCC 4.6.1 with -Wunsafe-loop-optimizations complains
+       "cannot optimize loop, the loop counter may overflow", a symptom
+       of the confusion.
+       * indent.c (Fvertical_motion): Mark locals as initialized.
+       * xdisp.c (reseat_to_string): Fix pointer signedness issue.
+
+2011-07-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * data.c (Fcdr, Fcar): Revert the last change, since it didn't
+       really clarify much.
+
+       * search.c (Fre_search_backward): Mention `case-fold-search' in
+       all the re_search_* functions (bug#8138).
+
+       * keyboard.c (Fopen_dribble_file): Document when the file is
+       closed (bug#8056).
+
+2011-07-14  Eli Zaretskii  <eliz@gnu.org>
+
+       * bidi.c (bidi_dump_cached_states): Fix format of displaying
+       bidi_cache_idx.
+
+       Support bidi reordering of display and overlay strings.
+       * xdisp.c (compute_display_string_pos)
+       (compute_display_string_end): Accept additional argument STRING.
+       (init_iterator, reseat_1): Initialize bidi_it->string.s to NULL.
+       (reseat_to_string): Initialize bidi_it->string.s and
+       bidi_it->string.schars.
+       (Fcurrent_bidi_paragraph_direction): Initialize itb.string.s to
+       NULL (avoids a crash in bidi_paragraph_init).  Initialize
+       itb.string.lstring.
+       (init_iterator): Call bidi_init_it only of a valid
+       buffer position was specified.  Initialize paragraph_embedding to
+       L2R.
+       (reseat_to_string): Initialize the bidi iterator.
+       (display_string): If we need to ignore text properties of
+       LISP_STRING, set IT->stop_charpos to IT->end_charpos.  (The
+       original value of -1 will not work with bidi.)
+       (compute_display_string_pos): First arg is now struct
+       `text_pos *'; all callers changed.  Support display properties on
+       Lisp strings.
+       (compute_display_string_end): Support display properties on Lisp
+       strings.
+       (init_iterator, reseat_1, reseat_to_string): Initialize the
+       string.bufpos member to 0 (zero, for compatibility with IT_CHARPOS
+       when iterating on a string not from display properties).
+       (compute_display_string_pos, compute_display_string_end): Fix
+       calculation of the object to scan.  Fixes an error when using
+       arrow keys.
+       (next_element_from_buffer): Don't abort when IT_CHARPOS is before
+       base_level_stop; instead, set base_level_stop to BEGV.  Fixes
+       crashes in vertical-motion.
+       (next_element_from_buffer): Improve commentary for when
+       the iterator is before prev_stop.
+       (init_iterator): Initialize bidi_p from the default value of
+       bidi-display-reordering, not from buffer-local value.  Use the
+       buffer-local value only if initializing for buffer iteration.
+       (handle_invisible_prop): Support invisible properties on strings
+       that are being bidi-reordered.
+       (set_iterator_to_next): Support bidi reordering of C strings and
+       Lisp strings.
+       (next_element_from_string): Support bidi reordering of Lisp
+       strings.
+       (handle_stop_backwards): Support Lisp strings as well.
+       (display_string): Support display of R2L glyph rows.  Use
+       IT_STRING_CHARPOS when displaying from a Lisp string.
+       (init_iterator): Don't initialize it->bidi_p for strings
+       here.
+       (reseat_to_string): Initialize it->bidi_p for strings here.
+       (next_element_from_string, next_element_from_c_string)
+       (next_element_from_buffer): Add xassert's for correspondence
+       between IT's object being iterated and it->bidi_it.string
+       structure.
+       (face_before_or_after_it_pos): Support bidi iteration.
+       (next_element_from_c_string): Handle the case of the first string
+       character that is not the first one in the visual order.
+       (get_visually_first_element): New function, refactored from common
+       parts of next_element_from_buffer, next_element_from_string, and
+       next_element_from_c_string.
+       (tool_bar_lines_needed, redisplay_tool_bar)
+       (display_menu_bar): Force left-to-right direction.  Add a FIXME
+       comment for making that be controlled by a user option.
+       (push_it, pop_it): Save and restore the state of the
+       bidi iterator.  Save and restore the bidi_p flag.
+       (pop_it): Iterate out of display property for string iteration as
+       well.
+       (iterate_out_of_display_property): Support iteration over strings.
+       (handle_single_display_spec): Set up it->bidi_it for iteration
+       over a display string, and call bidi_init_it.
+       (handle_single_display_spec, next_overlay_string)
+       (get_overlay_strings_1, push_display_prop): Set up the bidi
+       iterator for displaying display or overlay strings.
+       (forward_to_next_line_start): Don't use the shortcut if
+       bidi-iterating.
+       (back_to_previous_visible_line_start): If handle_display_prop
+       pushed the iterator stack, restore the internal state of the bidi
+       iterator by calling bidi_pop_it same number of times.
+       (reseat_at_next_visible_line_start): If ON_NEWLINE_P is non-zero,
+       and we are bidi-iterating, don't decrement the iterator position;
+       instead, set the first_elt flag in the bidi iterator, to produce
+       the same effect.
+       (reseat_1): Remove redundant setting of string_from_display_prop_p.
+       (push_display_prop): xassert that we are iterating a buffer.
+       (push_it, pop_it): Save and restore paragraph_embedding member.
+       (handle_single_display_spec, next_overlay_string)
+       (get_overlay_strings_1, reseat_1, reseat_to_string)
+       (push_display_prop): Set up the `unibyte' member of bidi_it.string
+       correctly.  Don't assume unibyte strings are not bidi-reordered.
+       (compute_display_string_pos)
+       (compute_display_string_end): Fix handling the case of C string.
+       (push_it, pop_it): Save and restore from_disp_prop_p.
+       (handle_single_display_spec, push_display_prop): Set the
+       from_disp_prop_p flag.
+       (get_overlay_strings_1): Reset the from_disp_prop_p flag.
+       (pop_it): Call iterate_out_of_display_property only if we are
+       popping after iteration over a string that came from a display
+       property.  Fix a typo in popping stretch info.  Add an assertion
+       for verifying that the iterator position is in sync with the bidi
+       iterator.
+       (handle_single_display_spec, get_overlay_strings_1)
+       (push_display_prop): Fix initialization of paragraph direction for
+       string when that of the parent object is not yet determined.
+       (reseat_1): Call bidi_init_it to resync the bidi
+       iterator with IT's position.  (Bug#7616)
+       (find_row_edges): If ROW->start.pos gives position
+       smaller than min_pos, use it as ROW->minpos.  (Bug#7616)
+       (handle_stop, back_to_previous_visible_line_start, reseat_1):
+       Reset the from_disp_prop_p flag.
+       (SAVE_IT, RESTORE_IT): New macros.
+       (pos_visible_p, face_before_or_after_it_pos)
+       (back_to_previous_visible_line_start)
+       (move_it_in_display_line_to, move_it_in_display_line)
+       (move_it_to, move_it_vertically_backward, move_it_by_lines)
+       (try_scrolling, redisplay_window, display_line): Use them when
+       saving a temporary copy of the iterator and restoring it back.
+       (back_to_previous_visible_line_start, reseat_1)
+       (init_iterator): Empty the bidi cache "stack".
+       (move_it_in_display_line_to): If iterator ended up at
+       EOL, but we never saw any buffer positions smaller than
+       to_charpos, return MOVE_POS_MATCH_OR_ZV.  Fixes vertical cursor
+       motion in bidi-reordered lines.
+       (move_it_in_display_line_to): Record prev_method and prev_pos
+       immediately before the call to set_iterator_to_next.  Fixes cursor
+       motion in bidi-reordered lines with stretch glyphs and strings
+       displayed in margins.  (Bug#8133) (Bug#8867)
+       Return MOVE_POS_MATCH_OR_ZV only if iterator position is past
+       TO_CHARPOS.
+       (pos_visible_p): Support positions in bidi-reordered lines.  Save
+       and restore bidi cache.
+
+       * bidi.c (bidi_level_of_next_char): clen should be EMACS_NT, not int.
+       (bidi_paragraph_info): Delete unused struct.
+       (bidi_cache_idx, bidi_cache_last_idx): Declare EMACS_INT.
+       (bidi_cache_start): New variable.
+       (bidi_cache_reset): Reset bidi_cache_idx to bidi_cache_start, not
+       to zero.
+       (bidi_cache_fetch_state, bidi_cache_search)
+       (bidi_cache_find_level_change, bidi_cache_iterator_state)
+       (bidi_cache_find, bidi_peek_at_next_level)
+       (bidi_level_of_next_char, bidi_find_other_level_edge)
+       (bidi_move_to_visually_next): Compare cache index with
+       bidi_cache_start rather than with zero.
+       (bidi_fetch_char): Accept new argument STRING; all callers
+       changed.  Support iteration over a string.  Support strings with
+       display properties.  Support unibyte strings.  Fix the type of
+       `len' according to what STRING_CHAR_AND_LENGTH expects.
+       (bidi_paragraph_init, bidi_resolve_explicit_1)
+       (bidi_resolve_explicit, bidi_resolve_weak)
+       (bidi_level_of_next_char, bidi_move_to_visually_next): Support
+       iteration over a string.
+       (bidi_set_sor_type, bidi_resolve_explicit_1)
+       (bidi_resolve_explicit, bidi_type_of_next_char): ignore_bn_limit
+       can now be zero (for strings); special values 0 and -1 were
+       changed to -1 and -2, respectively.
+       (bidi_char_at_pos): New function.
+       (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak):
+       Call it instead of FETCH_MULTIBYTE_CHAR.
+       (bidi_move_to_visually_next): Abort if charpos or bytepos were not
+       initialized to valid values.
+       (bidi_init_it): Don't initialize charpos and bytepos with invalid
+       values.
+       (bidi_level_of_next_char): Allow the sentinel "position" to pass
+       the test for valid cached positions.  Fix the logic for looking up
+       the sentinel state in the cache.  GCPRO the Lisp string we are
+       iterating.
+       (bidi_push_it, bidi_pop_it): New functions.
+       (bidi_initialize): Initialize the bidi cache start stack pointer.
+       (bidi_cache_ensure_space): New function, refactored from part of
+       bidi_cache_iterator_state.  Don't assume the required size is just
+       one BIDI_CACHE_CHUNK away.
+       (bidi_cache_start_stack, bidi_push_it): Use IT_STACK_SIZE.
+       (bidi_count_bytes, bidi_char_at_pos): New functions.
+       (bidi_cache_search): Don't assume bidi_cache_last_idx is
+       always valid if bidi_cache_idx is valid.
+       (bidi_cache_find_level_change): xassert that bidi_cache_last_idx
+       is valid if it's going to be used.
+       (bidi_shelve_cache, bidi_unshelve_cache): New functions.
+       (bidi_cache_fetch_state, bidi_cache_search)
+       (bidi_cache_find_level_change, bidi_cache_ensure_space)
+       (bidi_cache_iterator_state, bidi_cache_find)
+       (bidi_find_other_level_edge, bidi_cache_start_stack): All
+       variables related to cache indices are now EMACS_INT.
+
+       * dispextern.h (struct bidi_string_data): New structure.
+       (struct bidi_it): New member `string'.  Make flag members be 1-bit
+       fields, and put them last in the struct.
+       (compute_display_string_pos, compute_display_string_end): Update
+       prototypes.
+       (bidi_push_it, bidi_pop_it): Add prototypes.
+       (struct iterator_stack_entry): New members bidi_p,
+       paragraph_embedding, and from_disp_prop_p.
+       (struct it): Member bidi_p is now a bit field 1 bit wide.
+       (bidi_shelve_cache, bidi_unshelve_cache): Declare
+       prototypes.
+
+       * .gdbinit (xvectype, xvector, xcompiled, xchartable, xboolvector)
+       (xpr, xfont, xbacktrace): Use "header.size" when accessing vectors
+       and vector-like objects.
+
+       * dispnew.c (buffer_posn_from_coords): Save and restore the bidi
+       cache around display iteration.
+
+       * window.c (Fwindow_end, window_scroll_pixel_based)
+       (displayed_window_lines, Frecenter): Save and restore the bidi
+       cache around display iteration.
+
+2011-07-14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * editfns.c (Fdelete_region): Clarify the use of the named
+       parameters (bug#6788).
+
+2011-07-14  Martin Rudalics  <rudalics@gmx.at>
+
+       * indent.c (Fvertical_motion): Set and restore w->pointm when
+       saving and restoring the window's buffer (Bug#9006).
+
+2011-07-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * editfns.c (Fstring_to_char): Clarify just what is returned
+       (bug#6576).  Text by Eli Zaretskii.
+
+2011-07-13  Juanma Barranquero  <lekktu@gmail.com>
+
+       * gnutls.c (init_gnutls_functions): Honor gnutls_log_level (bug#9059).
+
+2011-07-13  Eli Zaretskii  <eliz@gnu.org>
+
+       * buffer.c (mmap_find): Fix a typo.
+
+2011-07-13  Johan Bockgård  <bojohan@gnu.org>
+
+       Fix execution of x selection hooks.
+       * xselect.c (Qx_lost_selection_functions)
+       (Qx_sent_selection_functions): New vars.
+       (syms_of_xselect): DEFSYM them.
+       (x_handle_selection_request): Pass Qx_sent_selection_functions
+       rather than Vx_sent_selection_functions to Frun_hook_with_args.
+       (x_handle_selection_clear,x_clear_frame_selections):
+       Pass Qx_lost_selection_functions rather than
+       Vx_lost_selection_functions to Frun_hook_with_args.
+
+2011-07-13  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * buffer.c (Fget_buffer_create): Initialize inhibit_shrinking.
+       The old code sometimes used this field without initializing it.
+
+       * alloc.c (gc_sweep): Don't read past end of array.
+       In theory, the old code could also have corrupted Emacs internals,
+       though it'd be very unlikely.
+
+2011-07-12  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * character.c (Fcharacterp): Don't advertise optional ignored
+       argument.  (Bug#4026)
+
+2011-07-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * keymap.c (syms_of_keymap): Clarify that "modifier" is "modifier
+       key" (bug#4257).
+
+       * window.c (Fset_window_start): Doc fix (bug#4199).
+       (Fset_window_hscroll): Ditto.
+
+2011-07-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix minor new problems caught by GCC 4.6.1.
+       * term.c (init_tty): Remove unused local.
+       * xsettings.c (store_monospaced_changed): Define this function only
+       if (defined HAVE_GSETTINGS || defined HAVE_GCONF), as it's
+       not used otherwise.
+
+2011-07-12  Chong Yidong  <cyd@stupidchicken.com>
+
+       * xdisp.c (Vresize_mini_windows): Minor doc fix (Bug#3300).
+
+2011-07-11  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * xdisp.c (syms_of_xdisp): Make it explicit that the mini-windows
+       are the mini-buffer and the echo area (bug#3320).
+
+       * term.c (init_tty): Remove support for supdup, c10 and perq
+       terminals, which are no longer supported (bug#1482).
+
+2011-07-10  Johan Bockgård  <bojohan@gnu.org>
+
+       * xdisp.c (Ftool_bar_lines_needed): Fix WINDOWP check.
+
+2011-07-10  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xmenu.c (menu_highlight_callback): Only pass frame to show_help_event
+       for non-popups (Bug#3642).
+
+2011-07-10  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * alloc.c (reset_malloc_hooks): Protoize.
+       * buffer.c (mmap_init, mmap_find, mmap_free_1, mmap_enlarge)
+       (mmap_set_vars, mmap_alloc, mmap_free, mmap_realloc): Likewise.
+       * cm.c (losecursor): Likewise.
+       * data.c (fmod): Likewise.
+       * dispnew.c (swap_glyphs_in_rows): Likewise.
+       * emacs.c (memory_warning_signal): Likewise.
+       * floatfns.c (float_error): Likewise.
+       * font.c (check_gstring, check_otf_features, otf_tag_symbol)
+       (otf_open, font_otf_capability, generate_otf_features)
+       (font_otf_DeviceTable, font_otf_ValueRecord, font_otf_Anchor):
+       Likewise.
+       * image.c (pbm_read_file): Likewise.
+       * indent.c (string_display_width): Likewise.
+       * intervals.c (check_for_interval, search_for_interval)
+       (inc_interval_count, count_intervals, root_interval)
+       (adjust_intervals_for_insertion, make_new_interval): Likewise.
+       * lread.c (defalias): Likewise.
+       * ralloc.c (r_alloc_check): Likewise.
+       * regex.c (set_image_of_range_1, set_image_of_range)
+       (regex_grow_registers): Likewise.
+       * sysdep.c (strerror): Likewise.
+       * termcap.c (valid_filename_p, tprint, main): Likewise.
+       * tparam.c (main): Likewise.
+       * unexhp9k800.c (run_time_remap, save_data_space)
+       (update_file_ptrs, read_header, write_header, calculate_checksum)
+       (copy_file, copy_rest, display_header): Likewise.
+       * widget.c (mark_shell_size_user_specified, create_frame_gcs):
+       Likewise.
+       * xdisp.c (check_it): Likewise.
+       * xfaces.c (register_color, unregister_color, unregister_colors):
+       Likewise.
+       * xfns.c (print_fontset_result): Likewise.
+       * xrdb.c (member, fatal, main): Likewise.
+
+2011-07-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix minor problems found by static checking (Bug#9031).
+       * chartab.c (char_table_set_range, map_sub_char_table):
+       Remove unused locals.
+       (uniprop_table): Now static.
+       * composite.c (_work_char): Remove unused static var.
+
+2011-07-09  Juanma Barranquero  <lekktu@gmail.com>
+
+       * chartab.c (uniprop_table_uncompress): Remove unused local variable.
+
+2011-07-09  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (qttip_cb): Remove code without function.
+
+2011-07-09  Eli Zaretskii  <eliz@gnu.org>
+
+       * w32.c (pthread_sigmask): New stub.
+
+2011-07-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Use pthread_sigmask, not sigprocmask (Bug#9010).
+       sigprocmask is portable only for single-threaded applications, and
+       Emacs can be multi-threaded when it uses GTK.
+       * Makefile.in (LIB_PTHREAD_SIGMASK): New macro.
+       (LIBES): Use it.
+       * callproc.c (Fcall_process):
+       * process.c (create_process):
+       * sysdep.c (sys_sigblock, sys_sigunblock, sys_sigsetmask):
+       Use pthread_sigmask, not sigprocmask.
+
+2011-07-08  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (qttip_cb): Set line wrap to FALSE for tooltip widget.
+       (xg_prepare_tooltip): Revert text in x->ttip_lbl, margins was
+       wrong (Bug#8591).
+
+2011-07-08  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_prepare_tooltip): Fix indentation and comment.
+       Put text in x->ttip_lbl instead of gtk_tooltip_set_text (Bug#8591).
+       (xg_hide_tooltip): Fix comment.
+
+       * nsterm.m (initFrameFromEmacs): Don't use ns_return_types
+       in registerServicesMenuSendTypes.
+       (validRequestorForSendType): Don't check ns_return_types.
+
+       * nsfns.m (Fx_open_connection): Put NSStringPboardType into
+       ns_return_type.
+
+2011-07-08  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (w32_wnd_proc) [WM_TIMER, WM_SET_CURSOR]: Avoid using
+       frame struct members of non-existent frames (Bug#6284).
+
+2011-07-08  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.m (keyDown): Call to wantsToDelayTextChangeNotifications and
+       variable firstTime not needed on OSX >= 10.6.
+       (setPosition): setFloatValue:knobProportion: is deprecated on OSX
+       >= 10.5.  Use setKnobProportion, setDoubleValue.
+
+       * nsterm.h (MAC_OS_X_VERSION_10_3, MAC_OS_X_VERSION_10_4)
+       (MAC_OS_X_VERSION_10_5): Define if not defined.
+       (EmacsView, EmacsTooltip): Implements NSWindowDelegate on OSX >= 10.6.
+       (EmacsMenu): Implements NSMenuDelegate on OSX >= 10.6.
+       (EmacsToolbar): Implements NSToolbarDelegate on OSX >= 10.6.
+
+       * nsselect.m (ns_string_from_pasteboard): Don't use deprecated methods
+       cString and lossyCString on OSX >= 10.4
+
+       * nsmenu.m (fillWithWidgetValue): Don't use depercated method
+       sizeToFit on OSX >= 10.2.
+
+       * nsimage.m (allocInitFromFile): Don't use deprecated method
+       bestRepresentationForDevice on OSX >= 10.6.
+
+       * nsfns.m (check_ns_display_info): Cast to long and use %ld in error
+       to avoid warning.
+
+       * emacs.c: Declare unexec_init_emacs_zone.
+
+       * nsgui.h: Fix compiler warning about gnulib redefining verify.
+
+       * nsselect.m (ns_get_local_selection): Change to extern (Bug#8842).
+
+       * nsmenu.m (ns_update_menubar): Remove useless setDelegate call
+       on svcsMenu (Bug#8842).
+
+       * nsfns.m (Fx_open_connection): Remove NSStringPboardType from
+       ns_return_types.
+       (Fns_list_services): Just return Qnil on 10.6, code not working there.
+
+       * nsterm.m (QUTF8_STRING): Declare.
+       (initFrameFromEmacs): Call registerServicesMenuSendTypes.
+       (validRequestorForSendType): Return type is (id).
+       Change indexOfObjectIdenticalTo to indexOfObject.
+       Check if we have local selection before returning self (Bug#8842).
+       (writeSelectionToPasteboard): Put local selection into paste board
+       if we have a local selection (Bug#8842).
+       (syms_of_nsterm): DEFSYM QUTF8_STRING.
+
+       * nsterm.h (MAC_OS_X_VERSION_10_6): Define here instead of nsterm.m.
+       (ns_get_local_selection): Declare.
+
+2011-07-07  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * keymap.c (describe_map_tree): Don't insert a double newline at
+       the end of the buffer (bug#1169) and return whether we inserted
+       something.
+
+       * callint.c (Fcall_interactively): Change "reading args" to
+       "providing args" to try to clarify what it does (bug#1010).
+
+2011-07-07  Kenichi Handa  <handa@m17n.org>
+
+       * composite.c (composition_compute_stop_pos): Ignore a static
+       composition starting before CHARPOS (Bug#8915).
+
+       * xdisp.c (handle_composition_prop): Likewise.
+
+2011-07-07  Eli Zaretskii  <eliz@gnu.org>
+
+       * term.c (produce_glyphs) <xassert>: Allow IT_GLYPHLESS in it->what.
+       (Bug#9015)
+
+2011-07-07  Kenichi Handa  <handa@m17n.org>
+
+       * character.h (unicode_category_t): New enum type.
+
+       * chartab.c (uniprop_decoder_t, uniprop_encoder_t): New types.
+       (Qchar_code_property_table): New variable.
+       (UNIPROP_TABLE_P, UNIPROP_GET_DECODER)
+       (UNIPROP_COMPRESSED_FORM_P): New macros.
+       (char_table_ascii): Uncompress the compressed values.
+       (sub_char_table_ref): New arg is_uniprop.  Callers changed.
+       Uncompress the compressed values.
+       (sub_char_table_ref_and_range): Likewise.
+       (char_table_ref_and_range): Uncompress the compressed values.
+       (sub_char_table_set): New arg is_uniprop.  Callers changed.
+       Uncompress the compressed values.
+       (sub_char_table_set_range): Args changed.  Callers changed.
+       (char_table_set_range): Adjuted for the above change.
+       (map_sub_char_table): Delete args default_val and parent.  Add arg
+       top.  Give decoded values to a Lisp function.
+       (map_char_table): Adjusted for the above change.  Give decoded
+       values to a Lisp function.  Gcpro more variables.
+       (uniprop_table_uncompress)
+       (uniprop_decode_value_run_length): New functions.
+       (uniprop_decoder, uniprop_decoder_count): New variables.
+       (uniprop_get_decoder, uniprop_encode_value_character)
+       (uniprop_encode_value_run_length, uniprop_encode_value_numeric):
+       New functions.
+       (uniprop_encoder, uniprop_encoder_count): New variables.
+       (uniprop_get_encoder, uniprop_table)
+       (Funicode_property_table_internal, Fget_unicode_property_internal)
+       (Fput_unicode_property_internal): New functions.
+       (syms_of_chartab): DEFSYM Qchar_code_property_table, defsubr
+       Sunicode_property_table_internal, Sget_unicode_property_internal,
+       and Sput_unicode_property_internal. Defvar_lisp
+       char-code-property-alist.
+
+       * composite.c (CHAR_COMPOSABLE_P): Adjusted for the change of
+       Vunicode_category_table.
+
+       * font.c (font_range): Adjusted for the change of
+       Vunicode_category_table.
+
+2011-07-07  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * m/iris4d.h: Remove file, move contents ...
+       * s/irix6-5.h: ... here.
+
 2011-07-06  Paul Eggert  <eggert@cs.ucla.edu>
 
        Remove unportable assumption about struct layout (Bug#8884).
        (xpm_put_color_table_h):
        * lisp.h (struct Lisp_Hash_Table):
        * minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
-       * print.c (print):  Use 'EMACS_UINT' and 'EMACS_INT'
+       * print.c (print): Use 'EMACS_UINT' and 'EMACS_INT'
        for hashes and hash indexes, instead of 'unsigned' and 'int'.
        * alloc.c (allocate_vectorlike):
        Check for overflow in vector size calculations.
 
        * dispnew.c (shift_glyph_matrix, scrolling_window): Mark scrolled row
        for fringe update if it has periodic bitmap.
-       (row_equal_p): Also compare left_fringe_offset, right_fringe_offset,
+       (row_equal_p): Also compare left_fringe_offset, right_fringe_offset,
        and fringe_bitmap_periodic_p.
 
        * fringe.c (get_fringe_bitmap_data): New function.