* lisp.h (Mouse_HLInfo): Move from here...
[bpt/emacs.git] / src / ChangeLog
index 888db1f..5633d95 100644 (file)
@@ -1,3 +1,351 @@
+2013-08-27  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (Mouse_HLInfo): Move from here...
+       * dispextern.h (Mouse_HLInfo): ...to here and offload lisp.h.
+       (reset_mouse_highlight): New function.
+       * msdos.c (dos_set_window_size, IT_update_begin)
+       (internal_terminal_init):
+       * nsterm.m (ns_update_window_end, x_free_frame_resources)
+       (ns_initialize_display_info):
+       * w32console.c (initialize_w32_display):
+       * w32term.c (x_update_window_end, x_free_frame_resources)
+       (w32_initialize_display_info):
+       * xterm.c (x_update_window_end, x_free_frame_resources, x_term_init):
+       * window.c (Fdelete_other_windows_internal):
+       * xdisp.c (clear_mouse_face, cancel_mouse_face): Use it.
+       * termchar.h (toplevel):
+       * xterm.h (toplevel): Include dispextern.h.
+
+2013-08-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix minor problems found by static checking.
+       * image.c (XGetPixel, XPutPixel) [HAVE_NS]: Now static.
+       (expect): Avoid nested-if warning.
+       (x_build_heuristic_mask) [HAVE_NS]: Avoid unused-var warning.
+       * nsmenu.m (fillWithWidgetValue:): Avoid type warning.
+       * nsterm.h, nsterm.m (ns_select):
+       * xgselect.c, xgselect.h (xg_select):
+       Adjust signature to better match pselect's.
+       * nsterm.m (ns_select):
+       Don't set *TIMEOUT, since pselect doesn't.
+       * regex.c (whitespace_regexp): Now const_re_char *, to avoid
+       diagnostic about assigning const char * to it.
+       * xfaces.c (x_display_info) [HAVE_NS]: Remove; unused.
+
+2013-08-26  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * lread.c (substitute_object_recurse): Handle hash-tables as well
+       (bug#15190).
+
+2013-08-26  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix unlikely core dump in init_tty, and simplify terminfo case.
+       * term.c (init_tty) [TERMINFO]: Fix check for buffer overrun.
+       The old version incorrectly dumped core if malloc returned a
+       buffer containing only non-NUL bytes.
+       (init_tty): Do not allocate or free termcap buffers; the
+       struct does that for us now.
+       * termchar.h (TERMCAP_BUFFER_SIZE) [!TERMINFO]: New constant.
+       (struct tty_display_info): Define members termcap_term_buffer and
+       termcap_strings_buffer only if !TERMINFO, since terminfo doesn't
+       use them.  Allocate them directly in struct rather than indirectly
+       via a pointer, to simplify init_tty.
+
+       * frame.c (check_minibuf_window): Initialize 'window' properly,
+       so that Emacs reliably aborts later if 'window' is not initialized.
+
+2013-08-26  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (xg_initialize): Set gtk-menu-bar-accel to "" instead
+       of VoidSymbol (Bug#15154).
+
+2013-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * lisp.h (Mouse_HLInfo): Drop set-but-unused members
+       mouse_face_beg_y and mouse_face_end_y.
+       * xdisp.c (note_tool_bar_highlight, mouse_face_from_buffer_pos)
+       (mouse_face_from_string_pos, note_mode_line_or_margin_highlight):
+       Adjust users and update comment where appropriate.
+
+2013-08-26  Martin Rudalics  <rudalics@gmx.at>
+
+       * frame.c (check_minibuf_window): New function.
+       (delete_frame, Fmake_frame_invisible, Ficonify_frame):
+       Call check_minibuf_window (Bug#15183).
+
+2013-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * window.h (struct window): Replace last_cursor with last_cursor_vpos
+       because this is the only last cursor data we need to keep and consult.
+       * window.c (replace_window, set_window_buffer, Fsplit_window_internal):
+       * xdisp.c (mark_window_display_accurate_1, try_cursor_movement):
+       Adjust users.
+
+2013-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix recovering from possible decompression error.
+       Since insert_from_gap doesn't always move point, we can't use PT as
+       the position where the partially decompressed data ends, and
+       should count how many bytes was produced so far.
+       * decompress.c (struct decompress_unwind_data): Add nbytes member.
+       (unwind_decompress): Really delete partially uncompressed data.
+       (Fzlib_decompress_region): Take decompressed data size into account.
+
+2013-08-26  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * syntax.c (init_syntax_once): Adjust comment and do an early
+       initialization of Qchar_table_extra_slots just once...
+       * casetab.c (init_casetab_once):
+       * category.c (init_category_once):
+       * character.c (syms_of_character):
+       * coding.c (syms_of_coding):
+       * xdisp.c (syms_of_xdisp): ...and omit it here.
+
+2013-08-24  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (get_next_display_element): Don't apply to characters
+       from a display vector the logic of setting it->end_of_box_run_p
+       suitable for characters from a buffer.  (Bug#15175)
+
+       * w32.c (fdutimens): Call 'utime', which is implemented on w32.c
+       to handle directories, rather than '_utime' which doesn't.
+       (Bug#15176)
+
+2013-08-24  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (x_wm_set_size_hint): Don't set hints when maximized
+       or fullscreen (Bug#14627).
+
+2013-08-24  Paul Eggert  <eggert@cs.ucla.edu>
+
+       System-dependent integer overflow fixes.
+       * process.c (Fset_process_window_size): Signal an error if
+       the window size is outside the range supported by the lower level.
+       * sysdep.c (set_window_size): Return negative on error,
+       nonnegative on success, rather than -1, 0, 1 on not in system,
+       failure, success.  This is simpler.  Caller changed.
+       (serial_configure): Remove unnecessary initialization of local.
+       (procfs_get_total_memory) [GNU_LINUX]: Don't assume system memory
+       size fits in unsigned long; this isn't true on some 32-bit hosts.
+       Avoid buffer overrun if some future version of /proc/meminfo has a
+       variable name longer than 20 bytes.
+       (system_process_attributes) [__FreeBSD__]:
+       Don't assume hw.availpages fits in 'int'.
+
+2013-08-23  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Don't let very long directory names overrun the stack.
+       Fix some related minor problems involving "//", vfork.
+       * callproc.c (encode_current_directory): New function.
+       (call_process): Don't append "/"; not needed.
+       * fileio.c (file_name_as_directory_slop): New constant.
+       (file_name_as_directory): Allow SRC to be longer than SRCLEN;
+       this can save the caller having to alloca.
+       (Ffile_name_as_directory, Fdirectory_file_name, Fexpand_file_name):
+       Use SAFE_ALLOCA, not alloca.
+       (directory_file_name, Fexpand_file_name): Leave leading "//"
+       alone, since it can be special even on POSIX platforms.
+       * callproc.c (call_process):
+       * process.c (Fformat_network_address):
+       * sysdep.c (sys_subshell):
+       Use encode_current_directory rather than rolling our own.
+       (create_process): No need to encode directory; caller does that now.
+       * process.h (encode_current_directory): New decl.
+       * sysdep.c (sys_subshell): Work even if vfork trashes saved_handlers.
+       Rework to avoid 'goto xyzzy;'.
+
+2013-08-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (handle_face_prop): If the default face was remapped use
+       the remapped face for strings from prefix properties.  (Bug#15155)
+
+2013-08-23  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Minor cleanup for redisplay interface and few related functions.
+       * frame.h (enum text_cursor_kinds): Move from here...
+       * dispextern.h (enum text_cursor_kinds): ...to here.
+       (toplevel): Drop unnecessary declarations.
+       (struct redisplay_interface): Use bool and enum text_cursor_kinds
+       in update_window_end_hook and draw_window_cursor functions.
+       (display_and_set_cursor, x_update_cursor): Adjust prototypes.
+       * nsterm.m (ns_update_window_end, ns_draw_window_cursor):
+       * w32term.c (x_update_window_end,w32_draw_window_cursor):
+       * xterm.c (x_update_window_end, x_draw_window_cursor):
+       * xdisp.c (display_and_set_cursor, update_window_cursor)
+       (update_cursor_in_window_tree, x_update_cursor): Use bool and
+       enum text_cursor_kinds where appropriate.
+
+2013-08-23  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Redesign redisplay interface to drop updated_row and updated_area.
+       * dispextern.h (updated_row, updated_area): Remove declaration.
+       (struct redisplay_interface): Pass glyph row and row area parameters
+       to write_glyphs, insert_glyphs and clear_end_of_line functions.
+       (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
+       Adjust prototypes.
+       * dispnew.c (updated_row, updated_area): Remove.
+       (redraw_overlapped_rows, update_window_line): Adjust user.
+       (update_marginal_area, update_text_area): Likewise.  Pass updated row
+       as a parameter.  Prefer enum glyph_row_area to int where appropriate.
+       * xdisp.c (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
+       Adjust users.
+
+2013-08-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * process.c (flush_pending_output): Remove stub.
+       All uses removed.
+
+2013-08-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * callproc.c: Fix race that killed background processes (Bug#15144).
+       (call_process): New arg TEMPFILE_INDEX.  Callers changed.
+       Record deleted process-id in critical section, not afterwards.
+       Don't mistakenly kill process created by a call-process invocation
+       that discards output and does not wait.
+
+2013-08-21  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       Fix compilation with GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE
+       and GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES.
+       * alloc.c (toplevel): Remove unnecessary nested #if...#endif.
+       (mark_maybe_object) [!GC_MARK_STACK]: Define to emacs_abort
+       to shut up compiler in mark_object.
+       (dump_zombies): Convert to global and add EXTERNALLY_VISIBLE.
+
+2013-08-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * process.c (allocate_pty) [PTY_OPEN]: Set fd's FD_CLOEXEC flag.
+       We can't portably rely on PTY_OPEN doing that, even if
+       it calls posix_openpt with O_CLOEXEC.
+
+2013-08-20  Kenichi Handa  <handa@gnu.org>
+
+       * character.c (string_char): Improve commentary.
+
+2013-08-20  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * image.c (SIGNATURE_DIGESTSIZE): Remove.
+       (struct animation_cache): Make signature a flexible array member.
+       All uses changed.  This is a tad slower but may insulate us better
+       from future changes to ImageMagick.
+
+2013-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * image.c: Shrink memory needed for animation cache.
+       (SIGNATURE_DIGESTSIZE): New constant.
+       (struct animation_cache): Make 'signature' a fixed size array of bytes.
+       (imagemagick_create_cache): Copy the signature.  This saves
+       several KB of memory that ImageMagick wastes per signature.
+       Don't bother updating the update_time, as the caller does that now.
+       (imagemagick_prune_animation_cache): Don't destroy the signature, as
+       it's a fixed size struct member now.
+       (imagemagick_get_animation_cache): Always destroy the signature,
+       as it's now imagemagick_create_cache's responsibility to copy it.
+       Avoid duplicate calls to strcmp and to imagemagick_create_cache,
+       and use memcmp rather than strcmp.
+       eassert that ImageMagick returns a signature of the specified length.
+
+2013-08-19  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_get_animation_cache): Don't segfault on
+       each invocation.
+       (imagemagick_get_animation_cache): Revert to previous definition
+       so that it actually works.  But keep the memory leak fix.
+       (imagemagick_get_animation_cache): Fix memory leak.
+
+2013-08-19  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * image.c: Fix animation cache signature memory leak.
+       Fix some other minor performance problems while we're at it.
+       (imagemagick_create_cache): Clear just the members that
+       need clearing.  Don't set update_time, as caller does that now.
+       (imagemagick_prune_animation_cache, imagemagick_get_animation_cache):
+       Simplify by using pointer-to-pointer instead of a prev pointer.
+       (imagemagick_prune_animation_cache): Use make_emacs_time rather
+       than EMACS_TIME_FROM_DOUBLE, and DestroyString rather than free.
+       (imagemagick_get_animation_cache): Don't xstrdup the image signature;
+       it's already a copy.  Free the signature probe unless it's cached.
+
+       * process.c (handle_child_signal): Fix crash; deleted pid (Bug#15106).
+       This was introduced by my 2013-08-12 fix for Bug#15035.
+
+2013-08-19  Dmitry Antipov  <dmantipov@yandex.ru>
+
+       * image.c (imagemagick_create_cache, imagemagick_get_animation_cache)
+       (imagemagick_prune_animation_cache): Now static.
+
+2013-08-18  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_get_animation_cache): Don't segfault when
+       pruning all entries.
+
+2013-08-18  Ken Brown  <kbrown@cornell.edu>
+
+       * sheap.c (STATIC_HEAP_SIZE): Adjust to current needs; use bigger
+       static heap if ENABLE_CHECKING is defined.
+       (max_bss_sbrk_ptr): New variable.
+       (bss_sbrk): Use it.
+       (report_sheap_usage): Report maximum static heap usage instead of
+       ending static heap usage.
+
+2013-08-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * decompress.c (Fzlib_available_p) [WINDOWSNT]: Update the value
+       of zlib_initialized according to the results of calling
+       init_zlib_functions.
+
+2013-08-16  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c: Implement an ImageMagick per-image cache.
+       (imagemagick_get_animation_cache): Fix a double-free error.
+       (imagemagick_load_image): Remove the ping_wand code, which only
+       apparently saved time on invalid animated images, and slowed down
+       everything else.  Optimise for the common case.
+
+2013-08-16  Xue Fuqiao  <xfq.free@gmail.com>
+
+       * buffer.c (syms_of_buffer) <buffer-undo-list>: Doc fix.
+
+       * editfns.c (insert_before_markers): Mention overlay in the doc string.
+
+       * marker.c (set_marker): Remove documentation of undefined behavior.
+
+2013-08-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_compute_animated_image): Animate correctly
+       when sub-images are smaller than the main image.
+       (imagemagick_compute_animated_image): Setting the iterator row to
+       zero is apparently not allowed.
+       (imagemagick_compute_animated_image): Allow images that say they
+       have sub-images that are bigger than the main image, but just crop
+       them.
+
+2013-08-15  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsmenu.m (menuWillOpen:): Fix preprocessor test (Bug#15001).
+
+2013-08-15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * image.c (imagemagick_compute_animated_image): Respect the GIF
+       disposal methods.
+
+2013-08-15  Ken Brown  <kbrown@cornell.edu>
+
+       * emacs.c (main): Update comment about G_SLICE_ALWAYS_MALLOC.
+       * gmalloc.c (memalign) [CYGWIN]: Revert last change; it's not
+       needed.
+
+2013-08-15  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Fix minor problems found by static checking.
+       * frame.c (delete_frame):
+       * xdisp.c (next_element_from_display_vector):
+       Avoid uninitialized local.
+       * image.c (imagemagick_compute_animated_image): Port to C89.
+       Prefer usual GNU indentation style for loops.
+       Be more careful about bizarrely large sizes, by using ptrdiff_t
+       instead of int.
+
 2013-08-15  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Fix infinite frame selection loop (Bug#15025).
@@ -5,8 +353,8 @@
 
 2013-08-15  Eli Zaretskii  <eliz@gnu.org>
 
-       * xdisp.c (compute_window_start_on_continuation_line): When
-       WORD_WRAP is in effect, use move_it_to instead of move_it_by_lines
+       * xdisp.c (compute_window_start_on_continuation_line):
+       When WORD_WRAP is in effect, use move_it_to instead of move_it_by_lines
        to make sure we end up setting the window start at the leftmost
        visible character of the display line.  This avoids funky
        horizontal shifting because the window start is not kept on the
 
        * image.c (imagemagick_compute_animated_image): Implement animated
        images (bug#14700).
+       (imagemagick_compute_animated_image): Fix some compilation
+       warnings.  Implement a very simple cache to make the animation
+       usable at all, but it should be replaced with a per-image cache.
 
 2013-08-15  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Remove.
        (make_window): Initialize new integer fields to -1.
        (Fsplit_window_internal): Use direct assignment.
-       (Fset_window_configuration, save_window_save): Convert
-       Lisp_Object to integer and back where appropriate.
+       (Fset_window_configuration, save_window_save):
+       Convert Lisp_Object to integer and back where appropriate.
        (Fset_window_fringes): Adjust user.  Return t if any fringe
        was actually changed, and mention this in docstring.
 
        New macros.
        (Fdecompress_gzipped_region, unwind_decompress): Use the fn_*
        macros instead of invoking the zlib functions directly.
-       (syms_of_decompress): DEFSYM Qzlib_dll.  Staticpro
-       Szlib_available_p.
+       (syms_of_decompress): DEFSYM Qzlib_dll.
+       Staticpro Szlib_available_p.
 
 2013-08-12  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * nsmenu.m (ns_update_menubar): Call fillWithWidgetValue:frame:
        (initWithTitle:): Initialize frame to 0.
        (fillWithWidgetValue:): Call fillWithWidgetValue:frame.
-       (fillWithWidgetValue:frame:): Renamed from
+       (fillWithWidgetValue:frame:): Rename from
        fillWithWidgetValue:setDelegate, call initWithTile:frame: if f.
 
        * nsterm.h (EmacsMenu): fillWithWidgetValue:setDelegate renamed to
        * indent.c (width_run_cache_on_off): Adjust users.
        * bidi.c (bidi_paragraph_cache_on_off): New function.
        (bidi_find_paragraph_start): Use bidi_paragraph_cache if needed.
-       * insdel.c (prepare_to_modify_buffer): Invalidate
-       bidi_paragraph_cache if enabled.
+       * insdel.c (prepare_to_modify_buffer):
+       Invalidate bidi_paragraph_cache if enabled.
 
 2013-08-06  Dmitry Antipov  <dmantipov@yandex.ru>
 
        Avoid redundant Lisp_Object <-> struct frame conversions in font API.
        * font.h (struct font_driver): Change list, match, and list_family
        functions to accept struct frame * as first arg.
-       * font.c (font_score, font_compare, font_sort_entities): Remove
-       prototypes.
+       * font.c (font_score, font_compare, font_sort_entities):
+       Remove prototypes.
        (font_sort_entities, font_list_entities, font_select_entity):
        (font_find_for_lface, Flist_fonts, Ffont_family_list): Adjust to
        match font API change.
        or fscanf fails.
        (system_process_attributes): Prefer plain char to unsigned char
        when either will do.  Clean up properly if interrupted or if
-       memory allocations fail.  Don't assume sscanf succeeds.  Remove
-       no-longer-needed workaround to stop GCC from whining.  Read
-       command-line once, instead of multiple times.  Check read status a
+       memory allocations fail.  Don't assume sscanf succeeds.
+       Remove no-longer-needed workaround to stop GCC from whining.
+       Read command-line once, instead of multiple times.  Check read status a
        bit more carefully.
 
        Fix obscure porting bug with varargs functions.
        of the old Fcall_process_region.  Use Fcopy_sequence to create the
        temp file name, rather than alloca + build_string, for simplicity.
        Don't bother to block input around the temp file creation;
-       shouldn't be needed.  Simplify use of mktemp.  Use
-       record_unwind_protect immediately after creating the temp file;
+       shouldn't be needed.  Simplify use of mktemp.
+       Use record_unwind_protect immediately after creating the temp file;
        this closes an unlikely race where the temp file was not removed.
        Use memcpy rather than an open-coded loop.
        (Fcall_process_region): Use the new function.  If the input is
        (try_cursor_movement, redisplay_window, try_window)
        (try_window_id): Use it instead of FRAME_LINE_HEIGHT.  (Bug#14771)
 
-       * window.c (window_scroll_pixel_based): use
-       default_line_pixel_height.
+       * window.c (window_scroll_pixel_based):
+       use default_line_pixel_height.
 
        * dispextern.h (default_line_pixel_height): Add prototype.