+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).
+ * frame.c (delete_frame): Prefer fast ad-hoc loop to next_frame.
+
+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
+ 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
+ same position. (Bug#15090)
+ (next_element_from_display_vector): Support 'box' face attribute
+ in the face definitions of a display vector. (Bug#15099)
+
+2013-08-15 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * 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>
+
+ * lisp.h (FOR_EACH_ALIST_VALUE): New macro
+ to do `for' loops over alist values.
+ * buffer.h (FOR_EACH_BUFFER):
+ * process.c (FOR_EACH_PROCESS): Use it.
+ (handle_child_signal, status_notify, Fget_buffer_process)
+ (kill_buffer_processes): Use FOR_EACH_PROCESS.
+
+2013-08-15 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * term.c (get_named_tty, create_tty_output, tty_free_frame_resources)
+ (tty_free_frame_resources, delete_tty): Prefer eassert to emacs_abort.
+ * image.c (make_image_cache): For struct image_cache, prefer xmalloc
+ to xzalloc and so avoid redundant call to memset.
+ * xterm.c (x_term_init): Avoid unnecessary initializations of dpyinfo
+ members because it is allocated with xzalloc and so already zeroed.
+
+2013-08-14 Ken Brown <kbrown@cornell.edu>
+
+ * gmalloc.c (memalign) [CYGWIN]: Rename to emacs_memalign
+ (Bug#15094).
+
+2013-08-14 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Utility function and macro to copy Lisp string to C string.
+ * lisp.h (xlispstrdupa): New macro.
+ (xlispstrdup): New prototype.
+ * alloc.c (xlispstrdup): New function.
+ * callint.c (Fcall_interactively):
+ * fileio.c (Ffile_name_directory, Fexpand_file_name)
+ (Fsubstitute_in_file_name):
+ * frame.c (Fmake_terminal_frame): Use xlispstrdupa.
+ * image.c (x_create_bitmap_from_file):
+ * w32term.c (w32_term_init):
+ * xterm.c (x_term_init): Use xlispstrdup.
+
2013-08-14 Lars Magne Ingebrigtsen <larsi@gnus.org>
+ * image.c (imagemagick_load_image): Make animated pictures work.
+ There's still some problems with background color settings, though
+ (bug#14700).
+
* decompress.c (unwind_decompress): Always restore point.
+2013-08-14 Xue Fuqiao <xfq.free@gmail.com>
+
+ * marker.c (set_marker): Reformat documentation.
+
2013-08-14 Paul Eggert <eggert@cs.ucla.edu>
* xdisp.c (cursor_type_changed): Now static.
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.