+2013-08-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some fd issues when running subprocesses (Bug#15035).
+ Fix bugs that can leak files or file descriptors on errors.
+ Don't unlink open temp files, as that's hard for users to diagnose
+ when things go awry (e.g., temp disk exhausted).
+ Don't bother to lock temp files. Check for invalid recursion.
+ * callproc.c (synch_process_fd): Remove. All uses removed.
+ (synch_process_tempfile): New var or macro.
+ (CALLPROC_STDOUT, CALLPROC_STDERR, CALLPROC_PIPEREAD, CALLPROC_FDS):
+ New constants.
+ (record_kill_process): New arg, the temp name. All callers changed.
+ (delete_temp_file): Now just a simple wrapper around unlink.
+ (call_process_kill): New arg, the call_process_fd array.
+ Close them all. Clear synch_process_pid. Remove the temp file,
+ or arrange for it to be removed.
+ (call_process_cleanup) [MSDOS]: Arg no longer contains file name;
+ that's been moved to synch_process_tempfile. Caller changed.
+ Do not remove the tempfile; that's now call_process_kill's
+ responsibility.
+ (call_process_cleanup) [!MSDOS]: Do not record unwind-protect for
+ call_process_kill; the caller now does that.
+ (call_process_cleanup): Do not close the process fd; that's now
+ call_process_kill's responsibility.
+ (Fcall_process): Implement via new function call_process, which
+ has most of the old body of Fcall_process, but with a different API.
+ (call_process): New function that does not open or close filefd if
+ it is nonnegative. Record which fds need to be closed, and let
+ call_process_kill close (and remove the tempfile, on MSDOS) on error.
+ Signal an error if invoked recursively (could be done via a hook).
+ Simplify creation of the tempfile in the MSDOS case.
+ Don't create the output file until after checking for the executable.
+ Report any failure to open /dev/null.
+ Don't open /dev/null for writing twice; once is enough.
+ Don't create pipe if all output is being discarded or sent to file.
+ Don't worry about setting up the coding system or reading from the
+ pipe if all output is being discarded.
+ Hoist fd_error local into top level, to lessen block nesting.
+ Don't record deleted pid here; now done by Fcall_process_region.
+ (Fcall_process) [MSDOS]: Report mktemp failure immediately,
+ and note its success in synch_process_tempfile.
+ Do not leak resources when child_setup fails.
+ (Fcall_process) [!MSDOS && !WINDOWSNT]: Remove duplicate assignment
+ to child_errno. Remove unnecessary close of fd0; it's close-on-exec.
+ (create_temp_file): Now returns open fd, with an additional
+ Lisp_Object * argument to return the name. All callers changed.
+ Do not close the file; rewind it instead, and leave it open for
+ the caller. Do not lock the temp file. Unwind-protect the file
+ and the file-descriptor.
+ (Fcall_process_region): If the input is /dev/null, unwind-protect it.
+ If an asynchrounous process, record it here, not in call_process.
+ (syms_of_callproc) [MSDOS]: Initialize synch_process_tempfile.
+ * eval.c (set_unwind_protect): New function.
+ * fileio.c (write_region): New function, generalized from the
+ old Fwrite_region. Do not lock temp files.
+ (Fwrite_region): Use it.
+ * lisp.h (set_unwind_protect, write_region): New decls.
+ * process.c: Include <verify.h>.
+ (make_process): Mark fds as initially closed.
+ (deleted_pid_list): Now a list of pid-filename pairs.
+ All uses changed.
+ (close_process_fd): New function.
+ (SUBPROCESS_STDIN, WRITE_TO_SUBPROCESS, READ_FROM_SUBPROCESS)
+ (SUBPROCESS_STDOUT, READ_FROM_EXEC_MONITOR, EXEC_MONITOR_OUTPUT):
+ New constants. Verify that their number matches PROCESS_OPEN_FDS.
+ (create_process, create_pty, Fmake_serial_process)
+ (server_accept_connection): Record which fds need to be closed,
+ and let deactivate_process close them.
+ (Fmake_network_process): Do not discard the unwind-protect
+ until it's safe to do so.
+ (deactivate_process): Close the fds opened by create_process etc.
+ (Fprocess_send_eof): Adjust to new way of recording open fds.
+ Report an error if /dev/null can't be opened, instead of aborting.
+ * process.h (PROCESS_OPEN_FDS): New constant.
+ (struct Lisp_Process): New member open_fds.
+ (record_kill_process, record_deleted_pid): Adjust signatures.
+ (record_deleted_pid): Move decl here ...
+ * syswait.h (record_deleted_pid): ... from here.
+
+2013-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * decompress.c: Fix bugs with large buffers and weird inputs.
+ Tune a bit. Reindent as per usual Emacs style.
+ (BUFFER_SIZE): Remove.
+ (Fdecompress_gzipped_region): Do not mishandle input buffers with
+ more than UINT_MAX bytes. Decompress into the gap instead of into
+ an auto buffer, as this should avoid copying. Return nil if
+ 'inflate' returns Z_NEED_DICT, as we have no dictionary. Do not
+ set immediate_quit; we shouldn't trust zlib code that much.
+
+2013-08-11 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * decompress.c (Fdecompress_gzipped_region): Respect all zlib
+ errors, and really move the gap to where we want it.
+
+ * lisp.h: Include decompress.c support.
+
+ * emacs.c (main): Include decompress.c support.
+
+ * Makefile.in: Include -lz if present.
+
+2013-08-11 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsmenu.m (ns_update_menubar): Call fillWithWidgetValue:frame:
+ (initWithTitle:): Initialize frame to 0.
+ (fillWithWidgetValue:): Call fillWithWidgetValue:frame.
+ (fillWithWidgetValue:frame:): Renamed from
+ fillWithWidgetValue:setDelegate, call initWithTile:frame: if f.
+
+ * nsterm.h (EmacsMenu): fillWithWidgetValue:setDelegate renamed to
+ fillWithWidgetValue:frame:
+
+ * nsfns.m (Fns_convert_utf8_nfd_to_nfc): Allocate and release pool to
+ remove memory leak warnings.
+
+ * nsterm.m (menu_pending_title, ns_get_pending_menu_title): Remove.
+ (ns_check_menu_open): Handle menu == nil. Remove assignment to
+ menu_pending_title.
+
+ * nsmenu.m (ns_update_menubar): Call fillWithWidgetValue:setDelegate.
+ (x_activate_menubar): Update the whole menu.
+ (trackingNotification:): Call ns_check_menu_open if tracking ends.
+ (menuWillOpen:): Increment trackingMenu. For OSX <= 10.6, exit if
+ current event is not NSSystemDefined (Bug#15001).
+ Call ns_check_menu_open only if trackingMenu is 2.
+ (menuDidClose:): New method, decrease trackingMenu.
+ (fillWithWidgetValue:setDelegate:): New method.
+ (fillWithWidgetValue:): Call the above.
+
+ * nsterm.h (EmacsMenu): Add fillWithWidgetValue:setDelegate:
+
+2013-08-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ Omit some unnecessary casts.
+ Many of these go back to the old pre-C89 days, when they may have
+ been needed, but we've been assuming C89 or later for a while now.
+ * alloc.c (live_string_p, live_cons_p, live_symbol_p)
+ (live_float_p, live_misc_p, live_vector_p):
+ * buffer.c (compare_overlays, cmp_for_strings, mmap_find)
+ (mmap_alloc, alloc_buffer_text, enlarge_buffer_text)
+ (defvar_per_buffer):
+ * callint.c (Fcall_interactively):
+ * doc.c (Fsubstitute_command_keys):
+ * filelock.c (get_boot_time):
+ * frame.c (xrdb_get_resource):
+ * gtkutil.c (hierarchy_ch_cb, qttip_cb, style_changed_cb)
+ (delete_cb, xg_dialog_response_cb, xg_maybe_add_timer)
+ (xg_get_file_name_from_selector, menuitem_destroy_callback)
+ (menuitem_highlight_callback, menu_destroy_callback)
+ (xg_update_menu_item, xg_modify_menubar_widgets, menubar_map_cb)
+ (xg_tool_bar_callback, xg_get_tool_bar_widgets)
+ (xg_tool_bar_detach_callback, xg_tool_bar_attach_callback)
+ (xg_tool_bar_help_callback, tb_size_cb):
+ * image.c (xpm_alloc_color, png_read_from_memory)
+ (png_read_from_file, png_load_body, our_memory_skip_input_data)
+ (jpeg_memory_src, jpeg_file_src, imagemagick_load_image)
+ (syms_of_image):
+ * keymap.c (describe_map):
+ * nsfns.m (Fns_display_monitor_attributes_list):
+ * nsmenu.m (process_dialog:):
+ * nsterm.m (hold_event):
+ * process.c (wait_reading_process_output):
+ * regex.c (REGEX_REALLOCATE, re_set_registers, re_exec, regexec):
+ * scroll.c (do_direct_scrolling, scrolling_1):
+ * termcap.c (tgetent):
+ * window.c (check_window_containing, add_window_to_list)
+ (freeze_window_starts):
+ * xdisp.c (compare_overlay_entries, vmessage):
+ * xfns.c (x_window, x_get_monitor_attributes_xinerama)
+ (x_get_monitor_attributes_xrandr)
+ (Fx_display_monitor_attributes_list, x_display_info_for_name)
+ (Fx_open_connection, file_dialog_cb, file_dialog_unmap_cb):
+ * xfont.c (xfont_match, xfont_open):
+ * xmenu.c (x_menu_wait_for_event, menu_highlight_callback)
+ (menubar_selection_callback, menu_position_func)
+ (popup_selection_callback, create_and_show_popup_menu)
+ (dialog_selection_callback, create_and_show_dialog):
+ * xrdb.c (x_get_string_resource):
+ (main) [TESTRM]:
+ * xsmfns.c (x_session_check_input):
+ * xterm.c (x_draw_glyphless_glyph_string_foreground)
+ (xm_scroll_callback, xg_scroll_callback, xg_end_scroll_callback)
+ (xaw_jump_callback, xaw_scroll_callback):
+ Omit unnecessary casts.
+
+2013-08-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Minor string-length refactoring.
+ * alloc.c (xstrdup): Use memcpy, not strcpy, since the length's known.
+ * frame.c (make_monitor_attribute_list):
+ Prefer build_string to strlen + make_string.
+
+2013-08-10 Jan Djärv <jan.h.d@swipnet.se>
+
+ * xterm.c (x_error_handler): Also ignore BadWindow for X_SetInputFocus,
+ don't check minor_code (Bug#14417).
+
+2013-08-09 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (draw_glyphs): Don't compare row pointers, compare row
+ vertical positions instead. This avoids calling MATRIX_ROW with
+ row numbers that are possibly beyond valid limits. (Bug#15064)
+
+2013-08-09 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Use xstrdup and build_unibyte_string where applicable.
+ * alloc.c (xstrdup): Tiny cleanup. Add eassert.
+ * xfns.c (x_window):
+ * xrdb.c (x_get_customization_string):
+ * xterm.c (xim_initialize):
+ * w32fns.c (w32_window): Use xstrdup.
+ (w32_display_monitor_attributes_list):
+ * emacs.c (init_cmdargs):
+ * keyboard.c (PUSH_C_STR):
+ * nsfont.m (nsfont_open):
+ * sysdep.c (system_process_attributes):
+ * w32.c (system_process_attributes):
+ * xdisp.c (message1, message1_nolog): Use build_unibyte_string.
+
+2013-08-09 Eli Zaretskii <eliz@gnu.org>
+
+ * w32.c (PEXCEPTION_POINTERS, PEXCEPTION_RECORD, PCONTEXT): Define
+ variables of these types so that GDB would know about them, as aid
+ for debugging fatal exceptions. (Bug#15024) See also
+ http://sourceware.org/ml/gdb/2013-08/msg00010.html for related
+ discussions.
+
+2013-08-08 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsterm.m (ns_update_begin): Don't change clip path if it would be
+ larger than the NSWindow (Bug#14934).
+
+2013-08-08 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Redesign redisplay interface to drop global variable updated_window.
+ Always pass currently updated window as a parameter to update routines.
+ * dispextern.h (updated_window): Remove declaration.
+ (struct redisplay_interface): Pass window parameter to
+ write_glyphs, insert_glyphs, clear_end_of_line, cursor_to
+ and after_update_window_hook.
+ (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line, x_cursor_to):
+ Adjust prototypes.
+ * dispnew.c (updated_window): Remove.
+ (redraw_overlapped_rows, update_marginal_area, update_text_area)
+ (update_window_line): Adjust to match redisplay interface changes.
+ * nsterm.m (ns_update_window_begin, ns_update_window_end)
+ (ns_scroll_run, ns_after_update_window_line):
+ * w32term.c (x_update_window_begin, x_update_window_end)
+ (x_after_update_window_line, x_scroll_run):
+ * xterm.c (x_update_window_begin, x_update_window_end)
+ (x_after_update_window_line, x_scroll_run):
+ * xdisp.c (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
+ Likewise. Adjust comments where appropriate.
+ (x_cursor_to): Simplify because this is always called during window
+ update (but install debugging check anyway).
+ (expose_window): Check must_be_updated_p flag to see whether this
+ function is called during window update.
+
+2013-08-08 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Do not reset window modification event counters excessively.
+ These leftovers and poor man's tricky methods to catch extra
+ redisplay's attention are no longer needed.
+ * frame.c (set_menu_bar_lines_1):
+ * minibuf.c (read_minibuf_unwind):
+ * window.c (Fset_window_start, set_window_buffer, window_resize_apply)
+ (grow_mini_window, shrink_mini_window, window_scroll_pixel_based)
+ (window_scroll_line_based, Fset_window_configuration):
+ * xdisp.c (redisplay_window): Do not reset last_modified and
+ last_overlay_modified counters.
+
+2013-08-07 Jan Djärv <jan.h.d@swipnet.se>
+
+ * xselect.c (x_send_client_event): Set send_event and serial, memset
+ data.l as it might be bigger than data.b. Use 24 bit mask to
+ XSendEvent (Bug#15034).
+
+2013-08-07 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (prepare_menu_bars): Don't call x_consider_frame_title
+ for TTY frames that are not the top frame on their console.
+ (Bug#14616)
+
+2013-08-07 Martin Rudalics <rudalics@gmx.at>
+
+ * w32term.c (w32fullscreen_hook): Really maximize frame when
+ asked for (Bug#14841).
+
+2013-08-07 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Prefer selected_window to Fselected_window, likewise for frames.
+ * buffer.c (Fbuffer_swap_text):
+ * data.c (Fvariable_binding_locus):
+ * window.c (run_window_configuration_change_hook): Adjust users.
+ * w16select.c (Fw16_set_clipboard_data, Fw16_get_clipboard_data):
+ Use decode_live_frame.
+
+2013-08-07 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Be more careful if selected window shows the buffer other than current,
+ use window_outdated only if this is not so. This change should also
+ address some weird issues discussed in Bug#13012.
+ * window.h (window_outdated): New prototype.
+ * window.c (window_outdated): Now here. Convert from static and
+ always assume window's buffer.
+ (Fwindow_end, Fwindow_line_height): Use it.
+ * xdisp.c (reconsider_clip_changes): Remove prototype, drop 2nd arg
+ and always assume window's buffer.
+ (redisplay_window): Adjust user.
+ (redisplay_internal): Call to reconsider_clip_changes once and
+ check whether mode line should be updated only if selected window
+ shows current buffer.
+ (run_window_scroll_functions): Use eassert for debugging check.
+ (Fmove_point_visually, note_mouse_highlight): Use window_outdated.
+
+2013-08-06 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * window.c (window_scroll, window_scroll_pixel_based)
+ (window_scroll_line_based): Use bool for booleans.
+
+2013-08-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * process.c: Fix minor off-by-one issues in descriptor counts.
+ This shouldn't fix any real bugs, but it cleans up the code a bit.
+ (max_process_desc, max_input_desc): -1, not 0, means none.
+ All uses changed.
+ (delete_input_desc): New function.
+ (delete_write_fd, delete_keyboard_wait_descriptor): Use it.
+ (deactivate_process): Scan backwards when recomuting max_process_desc;
+ that should be faster.
+ (init_process_emacs): Initialize max_input_desc.
+
+2013-08-06 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Use region cache to speedup bidi_find_paragraph_start.
+ * buffer.h (struct buffer): New member bidi_paragraph_cache.
+ Rename cache_long_line_scans to cache_long_scans.
+ * buffer.c (bset_cache_long_line_scans): Rename to
+ bset_cache_long_scans.
+ (Fget_buffer_create, Fmake_indirect_buffer, Fkill_buffer)
+ (Fbuffer_swap_text, init_buffer_once): Take bidi_paragraph_cache
+ into account.
+ (syms_of_buffer): Rename cache-long-line-scans to
+ cache-long-scans. Adjust docstring.
+ * search.c (newline_cache_on_off):
+ * 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.
+
+2013-08-06 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Invalidate region caches only if buffer text is going to be changed.
+ * lisp.h (modify_region_1): Remove 3rd arg and rename to...
+ (modify_text): ...new prototype.
+ (prepare_to_modify_buffer_1): New prototype.
+ * textprop.c (modify_region): Rename to...
+ (modify_text_properties): ...new function.
+ (add_text_properties_1, set_text_properties, Fremove_text_properties)
+ (Fremove_list_of_text_properties): Adjust users.
+ * insdel.c (modify_region_1): Remove 3rd arg and reimplement as...
+ (modify_text): ...new function.
+ (prepare_to_modify_buffer): Reimplement mostly as a wrapper for...
+ (prepare_to_modify_buffer_1): ...new function.
+ * casefiddle.c (casify_region):
+ * editfns.c (Fsubst_char_in_region, Ftranslate_region_internal)
+ (Ftranspose_regions): Use modify_text.
+
+2013-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp.mk (lisp): Add nadvice.elc.
+
+2013-08-05 Dmitry Antipov <dmantipov@yandex.ru>
+
+ New macro to iterate over live buffers similar to frames.
+ * buffer.h (FOR_EACH_LIVE_BUFFER): New macro.
+ (Vbuffer_alist, Qpriority, Qbefore_string, Qafter_string):
+ Declare buffer-related variables here to offload lisp.h.
+ * buffer.c (Vbuffer_alist): Adjust comment.
+ (Fget_file_buffer, get_truename_buffer, Fother_buffer)
+ (other_buffer_safely):
+ * data.c (store_symval_forwarding):
+ * dispnew.c (Fframe_or_buffer_changed_p):
+ * fileio.c (Fdo_auto_save):
+ * filelock.c (unlock_all_files):
+ * minibuf.c (read_minibuf): Use FOR_EACH_LIVE_BUFFER.
+
+2013-08-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some minor races in hosts lacking mkostemp (Bug#15015).
+ * callproc.c (create_temp_file):
+ * filelock.c (create_lock_file):
+ Assume mkostemp, since it's now provided by Gnulib.
+
+2013-08-04 Eli Zaretskii <eliz@gnu.org>
+
+ * w32.c (mkostemp): New function.
+ (mktemp): Remove, no longer used. Most of the code reused in
+ mkostemp. (Bug#15015)
+ (mktemp): Don't undef.
+
+2013-08-04 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * dispnew.c (glyph_matrix_count, glyph_pool_count):
+ Move under GLYPH_DEBUG and ENABLE_CHECKING.
+ (new_glyph_matrix, free_glyph_matrix, new_glyph_pool)
+ (free_glyph_pool, check_glyph_memory): Likewise for
+ all users. Adjust comments where appropriate.
+
+2013-08-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ * composite.h: Minor fixups.
+ (composition_registered_p): Rename from COMPOSITION_REGISTERD_P
+ to fix a misspelling, and change it to an inline function while
+ we're at it (it need not be a macro). All uses changed.
+ (composition_method, composition_valid_p):
+ Rewrite to avoid assignments in if-conditions.
+
+2013-08-03 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Do not use global Lisp_Object in composition macros.
+ * composite.h (composition_temp): Remove declaration.
+ (COMPOSITION_METHOD, COMPOSITION_VALID_P): Replace with...
+ (composition_method, composition_valid_p): ...inline functions.
+ (compose_region): Remove the leftover.
+ * composite.c (composition_temp): Remove.
+ (run_composition_function, update_compositions)
+ (composition_compute_stop_pos, composition_adjust_point)
+ (Ffind_composition_internal):
+ * coding.c (handle_composition_annotation):
+ * xdisp.c (handle_composition_prop, check_point_in_composition):
+ Related users changed.
+
+2013-08-03 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Drop FRAME_PTR typedef.
+ * composite.c, font.c, font.h, fontset.c, fontset.h, frame.c, frame.h:
+ * ftfont.c, ftxfont.c, gtkutil.c, gtkutil.h, image.c, keyboard.c:
+ * menu.c, menu.h, msdos.c, nsfns.m, nsfont.m, nsmenu.m, nsterm.h:
+ * nsterm.m, scroll.c, term.c, w32fns.c, w32font.c, w32font.h:
+ * w32inevt.c, w32inevt.h, w32menu.c, w32notify.c, w32term.c, w32term.h:
+ * w32uniscribe.c, w32xfns.c, widget.c, window.c, xdisp.c, xfaces.c:
+ * xfns.c, xfont.c, xftfont.c, xmenu.c, xselect.c, xterm.c:
+ All related users changed.
+
+2013-08-02 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * eval.c (default_toplevel_binding): New function.
+ (Fdefvar): Use it.
+ (unbind_to, backtrace_eval_unrewind): Do a bit of CSE simplification.
+ (Fdefault_toplevel_value, Fset_default_toplevel_value): New subrs.
+ (syms_of_eval): Export them.
+ * data.c (Fdefault_value): Micro cleanup.
+ * term.c (init_tty): Use "false".
+
+2013-08-02 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Fix X GC leak in GTK and raw (no toolkit) X ports.
+ * xterm.c (x_free_frame_resources): If white and black relief
+ GCs are allocated, always free them here.
+ * xfns.c (x_make_gc): Omit redundant initialization.
+ * widget.c (create_frame_gcs): Remove the leftover.
+ (EmacsFrameDestroy): Do nothing because all GCs are now freed
+ in x_free_frame_resources.
+
+2013-08-02 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsterm.m (windowWillResize:toSize:): Only change title if
+ ! maximizing_resize && FULLSCREEN_NONE (Bug#15005). strdup title before
+ modifying it.
+ (viewDidEndLiveResize): New method.
+
+ * nsterm.h (EmacsView): Add maximizing_resize, put it and old_title
+ inside NS_IMPL_COCOA.
+
+2013-08-02 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * insdel.c (adjust_after_replace, replace_range, del_range_2):
+ Do not check whether undo is enabled because record_insert and
+ record_delete does that themselves.
+
+2013-08-02 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.h (struct x_output) [HAVE_X_I18N]: Remove xic_base_fontname
+ member which is not really used any more.
+ (FRAME_XIC_BASE_FONTNAME): Remove.
+ * xfns.c (xic_free_fontset): Adjust user.
+ * xmenu.c (mouse_position_for_popup, x_activate_menubar)
+ (update_frame_menubar, set_frame_menubar, free_frame_menubar)
+ (create_and_show_popup_menu, xmenu_show, create_and_show_dialog)
+ (xdialog_show): Use eassert for debugging check.
+ * w32term.c (x_unfocus_frame): Remove unused dummy function.
+
+2013-08-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fileio.c, fns.c (merge): Move extern decl from here ...
+ * lisp.h (merge): ... to here.
+
+2013-08-01 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Fix last font-related change.
+ * w32font.h (w32font_list_internal, w32font_match_internal):
+ Fix prototype.
+ * w32uniscribe.c (uniscribe_list, uniscribe_match):
+ (uniscribe_list_family): Adjust to match font API change.
+ MS-Windows breakage reported by Juanma Barranquero <lekktu@gmail.com>
+ at http://lists.gnu.org/archive/html/emacs-devel/2013-08/msg00006.html.
+
+2013-08-01 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * frame.h (FRAME_MOUSE_UPDATE):
+ * nsterm.m (ns_frame_up_to_date): Omit redundant check
+ whether hlinfo->mouse_face_mouse_frame is non-NULL.
+
+2013-08-01 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_sort_entities, font_list_entities, font_select_entity):
+ (font_find_for_lface, Flist_fonts, Ffont_family_list): Adjust to
+ match font API change.
+ * xfont.c (xfont_list, xfont_match, xfont_list_family):
+ * ftfont.c (ftfont_list, ftfont_match, ftfont_list_family):
+ * ftxfont.c (ftxfont_list, ftxfont_match):
+ * xftfont.c (xftfont_list, xftfont_match):
+ * nsfont.m (nsfont_list, nsfont_match, nsfont_list_family):
+ * w32font.c (w32font_list, w32font_match, w32font_list):
+ (w32font_list_internal, w32_font_match_internal): Likewise.
+ * xfaces.c (Fx_family_fonts): Adjust user.
+
+2013-08-01 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Do not use pure Xism x_wm_set_icon_position in non-X ports.
+ * frame.c (x_set_frame_parameters): Call to x_wm_set_icon_position
+ only if HAVE_X_WINDOWS is in use.
+ * frame.h (x_set_frame_parameters): Move under HAVE_X_WINDOWS.
+ * nsterm.m (x_wm_set_icon_position): Remove no-op.
+ * w32term.c (x_wm_set_icon_position): Likewise.
+ * w32fns.c (x_icon): Adjust user.
+
+2013-08-01 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xterm.c (last_mouse_press_frame): Remove the
+ leftover which is not really used any more.
+ (handle_one_xevent, syms_of_xterm): Adjust users.
+ (x_flush): Call XFlush once per each X display, not frame.
+ This is better because this code always unconditionally skips
+ non-X frames in Vframe_list and issues the only XFlush if we
+ have more than one X frame on the same X display.
+ (any_help_event_p, x_draw_glyph_string_background, x_display_ok):
+ Use bool for booleans.
+ (x_draw_glyph_string_background, cvt_string_to_pixel):
+ (cvt_pixel_dtor): Drop unnecessary prototypes.
+ * xterm.h (x_display_ok): Adjust prototype.
+
+2013-07-31 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Drop unnecessary functions that deals with frame pixel size.
+ * frame.h, msdos.h, w32term.h, xterm.h (x_pixel_width)
+ (x_pixel_height): Drop prototypes.
+ * msdos.c, nsfns.m, w32fns.c, xfns.c (x_pixel_width)
+ (x_pixel_height): Drop implementations.
+ * frame.c (Fframe_pixel_height): Use FRAME_PIXEL_HEIGHT
+ which should be always valid for window frame.
+ (Frame_pixel_width): Likewise with FRAME_PIXEL_WIDTH.
+ * w32menu.c (Fx_popup_dialog):
+ * xmenu.c (Fx_popup_dialog): Likewise for both.
+
+2013-07-31 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * frame.c (Fmake_terminal_frame): Use store_in_alist to setup
+ frame parameters and call to Fmodify_frame_parameters just once.
+ (Fset_frame_height, Fset_frame_width): Mention nil frame in docstring.
+ (Fset_frame_size, Fset_frame_position): Use decode_live_frame
+ and mention nil frame in docstring.
+
+2013-07-31 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * frame.c (make_frame, x_set_frame_parameters): Use bool for boolean.
+ (x_figure_window_size): Likewise. Adjust to return long.
+ (syms_of_frame): Do not DEFSYM Qterminal_live_p.
+ (toplevel): Move Qterminal_live_p to...
+ * terminal.c (toplevel): ...here, make it static, and...
+ (syms_of_terminal): ...DEFSYM here.
+ * frame.h (Qterminal_live_p): Remove declaration.
+ (make_frame, x_figure_window_size): Adjust prototype.
+ * nsfns.m (Fx_create_frame): Use long for window flags.
+
+2013-07-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix tempfile bug on platforms lacking mkostemp and mkstemp (Bug#14986).
+ * callproc.c (create_temp_file) [! (HAVE_MKOSTEMP || HAVE_MKSTEMP)]:
+ Do not assume that emacs_close (INT_MAX) is a no-op.
+
+2013-07-30 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * xfaces.c (make_face_cache): For struct face_cache, prefer
+ xmalloc to xzalloc and so avoid redundant call to memset.
+ (Finternal_set_lisp_face_attribute): Fix comment typo and style.
+
+2013-07-30 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * fringe.c (draw_window_fringes, update_window_fringes)
+ (compute_fringe_widths):
+ * w32term.c (x_draw_glyph_string):
+ * window.c (candidate_window_p, Frecenter):
+ * xfaces.c (realize_basic_faces, realize_default_face)
+ (Fbitmap_space_p, Finternal_set_lisp_face_attribute)
+ (x_update_menu_appearance, face_attr_equal_p, lface_equal_p):
+ * xfns.c (x_set_cursor_color, xic_free_xfontset):
+ * xmenu.c (Fx_menu_bar_open_internal):
+ * xselect.c (x_reply_selection_request, Fx_get_atom_name):
+ * xsettings.c (xft_settings_event):
+ * xterm.c (x_draw_glyph_string, x_had_errors_p):
+ Use bool for booleans. Adjust style and comments where
+ appropriate.
+ * dispextern.h (draw_window_fringes, update_window_fringes)
+ (compute_fringe_widths):
+ * xterm.h (x_had_errors_p): Adjust prototype.
+
+2013-07-30 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * frame.c (Fmodify_frame_parameters): Always check 2nd arg with
+ CHECK_LIST. Rewrite the loop to avoid useless local variable.
+
+2013-07-29 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * fns.c (toplevel): Remove comment before Fsafe_length because
+ it checks for QUIT.
+
+2013-07-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * frame.c (delete_frame): Avoid unnecessary 'this_f' test (Bug#14970).
+
+2013-07-28 Eli Zaretskii <eliz@gnu.org>
+
+ * w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Make sure the
+ frame which got the message is still alive, before dereferencing
+ its pointer. (Bug#14970)
+
+ * frame.c (delete_frame): Test "this" frame's minibuffer window to
+ be a live window, before using it as such. (Bug#14970)
+
+2013-07-27 Eli Zaretskii <eliz@gnu.org>
+
+ * w32term.c (w32_read_socket) <WM_KILLFOCUS>: Call
+ w32_detect_focus_change instead of doing part of its job by hand.
+ This fixes the problem whereby FOCUS_OUT events were not sent to
+ the event queue.
+
+2013-07-26 Eli Zaretskii <eliz@gnu.org>
+
+ * process.c (Fprocess_list): Doc fix.
+
+ * w32term.c (w32_read_socket) <WM_EMACS_PAINT>: Warn about frame
+ being re-exposed only if it didn't ask to become visible.
+ <WM_SIZE>: Under SIZE_RESTORED, only set the frame visible if it
+ was previously iconified. (Bug#14841)
+ (x_iconify_frame): Mark the frame iconified.
+
+2013-07-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix minor problems found by static checking.
+ * eval.c (get_backtrace_frame, backtrace_eval_unrewind): Now static.
+ (backtrace_eval_unrewind): ';' -> '{}' to pacify GCC.
+
+2013-07-26 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * eval.c (set_specpdl_old_value): New function.
+ (unbind_to): Minor simplification.
+ (get_backtrace_frame): New function.
+ (Fbacktrace_frame): Use it. Add `base' argument.
+ (backtrace_eval_unrewind, Fbacktrace_eval): New functions.
+ (syms_of_eval): Export backtrace-eval.
+ * xterm.c (x_focus_changed): Simplify.
+
+2013-07-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ * fileio.c (Finsert_file_contents): Avoid double-close (Bug#14936).
+
+2013-07-24 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (redisplay_window): Instead of moving point out of
+ scroll margin, reject the force_start method, and try scrolling
+ instead. (Bug#14780)
+
+2013-07-24 Ken Brown <kbrown@cornell.edu>
+
+ * alloc.c (make_save_ptr): Define if HAVE_NTGUI is defined
+ (Bug#14944).
+
+2013-07-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * eval.c (Fprogn): Do not check that BODY is a proper list.
+ This undoes the previous change. The check slows down the
+ interpreter, and is not needed to prevent a crash. See
+ <http://lists.gnu.org/archive/html/emacs-devel/2013-07/msg00693.html>.
+
+2013-07-23 Glenn Morris <rgm@gnu.org>
+
+ * Makefile.in ($(etc)/DOC, temacs$(EXEEXT)): Ensure etc/ exists.
+
+2013-07-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port to GNU/Linux systems with tinfo but not ncurses.
+ * dispnew.c (init_display): Depend on USE_NCURSES, not GNU_LINUX,
+ to decide whether ncurses is being used. Without this change,
+ GCC complains about tgetent not being declared, on a system
+ that has tinfo installed but ncurses not installed.
+
+ * eval.c (Fprogn): Check that BODY is a proper list.
+
+ Tune UNEVALLED functions by using XCAR instead of Fcar, etc.
+ * data.c (Fsetq_default):
+ * eval.c (Fif, Fcond, Fprog1, Fsetq, Fquote, Ffunction, Fdefvar)
+ (Fdefconst, FletX, Flet, Fwhile, Fcatch, Funwind_protect)
+ (Fcondition_case):
+ Tune by taking advantage of the fact that ARGS is always a list
+ when a function is declared to have UNEVALLED args.
+
+ * emacsgtkfixed.c: Port to GCC 4.6.
+ GCC 4.6 complains about -Wunused-local-typedefs, introduced in 4.7.
+
+2013-07-23 Juanma Barranquero <lekktu@gmail.com>
+
+ * callproc.c (child_setup)[!WINDOWSNT]: Move exec_errno and pid
+ here to silence compiler warnings.
+
+2013-07-22 Paul Eggert <eggert@cs.ucla.edu>
+
+ * sysdep.c (frame) [__FreeBSD__]: #define to freebsd_frame
+ when including <sys/user.h>, to prevent Sparc/ARM machine/frame.h
+ from messing up Emacs's 'struct frame' (Bug#14923).
+
+2013-07-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ * alloc.c (make_save_ptr_ptr): Define this function.
+ It was inadvertently omitted. It's needed only if
+ HAVE_MENUS && ! (USE_X_TOOLKIT || USE_GTK).
+
+2013-07-21 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsterm.m (sendEvent:): Skip mouse moved if no dialog and no Emacs
+ frame have focus (Bug#14895).
+
+2013-07-21 Paul Eggert <eggert@cs.ucla.edu>
+
+ Avoid vfork-related deadlock more cleanly.
+ * callproc.c (child_setup): When the child's exec fails, output
+ the program name, as that's more useful. Use O_NONBLOCK to avoid
+ deadlock.
+ * process.c (create_process_1): Remove; no longer needed.
+ (create_process): Remove timer hack; no longer needed, now that
+ the child avoids deadlock.
+
+2013-07-20 Glenn Morris <rgm@gnu.org>
+
+ * image.c (Fimage_flush): Fix doc typo.
+
+2013-07-20 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix array bounds violation when pty allocation fails.
+ * process.c (PTY_NAME_SIZE): New constant.
+ (pty_name): Remove static variable; it's now auto.
+ (allocate_pty): Define even if !HAVE_PTYS; that's simpler.
+ Take pty_name as an arg rather than using a static variable.
+ All callers changed.
+ (create_process): Recover pty_flag from process, not from volatile local.
+ (create_pty): Stay inside array even when pty allocation fails.
+ (Fmake_serial_process): Omit unnecessary initializaiton of pty_flag.
+
+ * lread.c (Fload): Avoid initialization only when lint checking.
+ Mention that it's needed only for older GCCs.
+
+2013-07-20 Kenichi Handa <handa@gnu.org>
+
+ * coding.c (CODING_ISO_FLAG_LEVEL_4): New macro.
+ (decode_coding_iso_2022): Check the single-shift area. (Bug#8522)
+
+2013-07-20 Andreas Schwab <schwab@linux-m68k.org>
+
+ * lread.c (Fload): Avoid uninitialized warning.
+
+2013-07-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some minor file descriptor leaks and related glitches.
+ * filelock.c (create_lock_file) [!O_CLOEXEC]: Use fcntl with FD_CLOEXEC.
+ (create_lock_file): Use write, not emacs_write.
+ * image.c (slurp_file, png_load_body):
+ * process.c (Fnetwork_interface_list, Fnetwork_interface_info)
+ (server_accept_connection):
+ Don't leak an fd on memory allocation failure.
+ * image.c (slurp_file): Add a cheap heuristic for growing files.
+ * xfaces.c (Fx_load_color_file): Block input around the fopen too,
+ as that's what the other routines do. Maybe input need not be
+ blocked at all, but it's better to be consistent.
+ Avoid undefined behavior when strlen is zero.
+
+ * alloc.c (staticpro): Avoid buffer overrun on repeated calls.
+ (NSTATICS): Now a constant; doesn't need to be a macro.
+
+2013-07-19 Richard Stallman <rms@gnu.org>
+
+ * coding.c (decode_coding_utf_8): Add simple loop for fast
+ processing of ASCII characters.
+
+2013-07-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * conf_post.h (RE_TRANSLATE_P) [emacs]: Remove obsolete optimization.
+
+2013-07-19 Eli Zaretskii <eliz@gnu.org>
+
+ * keyboard.c (kbd_buffer_get_event): Use Display_Info instead of
+ unportable 'struct x_display_info'.
+ (DISPLAY_LIST_INFO): Delete macro: not needed, since Display_Info
+ is a portable type.
+
+2013-07-19 Paul Eggert <eggert@cs.ucla.edu>
+
+ * sysdep.c [GNU_LINUX]: Fix fd and memory leaks and similar issues.
+ (procfs_ttyname): Don't use uninitialized storage if emacs_fopen
+ 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
+ bit more carefully.
+
+ Fix obscure porting bug with varargs functions.
+ The code assumed that int is treated like ptrdiff_t in a vararg
+ function, which is not a portable assumption. There was a similar
+ -- though these days less likely -- porting problem with various
+ assumptions that pointers of different types all smell the same as
+ far as vararg functions is conserved. To make this problem less
+ likely in the future, redo the API to use varargs functions.
+ * alloc.c (make_save_value): Remove this vararg function.
+ All uses changed to ...
+ (make_save_int_int_int, make_save_obj_obj_obj_obj)
+ (make_save_ptr_int, make_save_funcptr_ptr_obj, make_save_memory):
+ New functions.
+ (make_save_ptr): Rename from make_save_pointer, for consistency with
+ the above. Define only on platforms that need it. All uses changed.
+
+2013-07-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * keyboard.c: Try to fix typos in previous change.
+ (DISPLAY_LIST_INFO): New macro.
+ (kbd_buffer_get_event): Do not access members that are not present
+ in X11. Revert inadvertent change of "!=" to "=".
+
+2013-07-18 Juanma Barranquero <lekktu@gmail.com>
+
+ * keyboard.c (kbd_buffer_get_event):
+ * w32term.c (x_focus_changed): Port FOCUS_(IN|OUT)_EVENT changes to W32.
+ Followup to 2013-07-16T11:41:06Z!jan.h.d@swipnet.se.
+
+2013-07-18 Paul Eggert <eggert@cs.ucla.edu>
+
+ * filelock.c: Fix unlikely file descriptor leaks.
+ (get_boot_time_1): Rework to avoid using emacs_open.
+ This doesn't actually fix a leak, but is better anyway.
+ (read_lock_data): Use read, not emacs_read.
+
+ * doc.c: Fix minor memory and file descriptor leaks.
+ * doc.c (get_doc_string): Fix memory leak when doc file absent.
+ (get_doc_string, Fsnarf_documentation):
+ Fix file descriptor leak on error.
+
+ * term.c: Fix minor fdopen-related file descriptor leaks.
+ * term.c (Fresume_tty) [!MSDOS]: Close fd if fdopen (fd) fails.
+ (init_tty) [!DOS_NT]: Likewise. Also close fd if isatty (fd) fails.
+
+ * charset.c: Fix file descriptor leaks and errno issues.
+ Include <errno.h>.
+ (load_charset_map_from_file): Don't leak file descriptor on error.
+ Use plain record_xmalloc since the allocation is larger than
+ MAX_ALLOCA; that's simpler here. Simplify test for exhaustion
+ of entries.
+ * eval.c (record_unwind_protect_nothing):
+ * fileio.c (fclose_unwind):
+ New functions.
+ * lread.c (load_unwind): Remove. All uses replaced by fclose_unwind.
+ The replacement doesn't block input, but that no longer seems
+ necessary.
+
+2013-07-17 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lread.c: Fix file descriptor leaks and errno issues.
+ (Fload): Close some races that leaked fds or streams when 'load'
+ was interrupted.
+ (Fload, openp): Report error number of last nontrivial failure to open.
+ ENOENT counts as trivial.
+ * eval.c (do_nothing, clear_unwind_protect, set_unwind_protect_ptr):
+ New functions.
+ * fileio.c (close_file_unwind): No need to test whether FD is nonnegative,
+ now that the function is always called with a nonnegative arg.
+ * lisp.h (set_unwind_protect_ptr, set_unwind_protect_int): Remove.
+ All uses replaced with ...
+ (clear_unwind_protect, set_unwind_protect_ptr): New decls.
+
+ A few more minor file errno-reporting bugs.
+ * callproc.c (Fcall_process):
+ * doc.c (Fsnarf_documentation):
+ * fileio.c (Frename_file, Fadd_name_to_file, Fmake_symbolic_link):
+ * process.c (set_socket_option):
+ Don't let a constructor trash errno.
+ * doc.c: Include <errno.h>.
+
+2013-07-16 Juanma Barranquero <lekktu@gmail.com>
+
+ * w32fns.c (unwind_create_tip_frame): Fix declaration.
+
+2013-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix w32 bug with call-process-region (Bug#14885).
+ * callproc.c (Fcall_process_region): Pass nil, not "/dev/null",
+ to Fcall_process when the input is empty. This simplifies the
+ code a bit. It makes no difference on POSIXish platforms but
+ apparently it fixes a bug on w32.
+
+ Fix bug where insert-file-contents closes a file twice (Bug#14839).
+ * fileio.c (close_file_unwind): Don't close if FD is negative;
+ this can happen when unwinding a zapped file descriptor.
+ (Finsert_file_contents): Unwind-protect the fd before the point marker,
+ in case Emacs runs out of memory between the two unwind-protects.
+ Don't trash errno when closing FD.
+ Zap the FD in the specpdl when closing it, instead of deferring
+ the removal of the unwind-protect; this fixes a bug where a child
+ function unwinds the stack past us.
+
+ New unwind-protect flavors to better type-check C callbacks.
+ This also lessens the need to write wrappers for callbacks,
+ and the need for make_save_pointer.
+ * alloca.c (free_save_value):
+ * atimer.c (run_all_atimers):
+ Now extern.
+ * alloc.c (safe_alloca_unwind):
+ * atimer.c (unwind_stop_other_atimers):
+ * keyboard.c (cancel_hourglass_unwind) [HAVE_WINDOW_SYSTEM]:
+ * menu.c (cleanup_popup_menu) [HAVE_NS]:
+ * minibuf.c (choose_minibuf_frame_1):
+ * process.c (make_serial_process_unwind):
+ * xdisp.h (pop_message_unwind):
+ * xselect.c (queue_selection_requests_unwind):
+ Remove no-longer-needed wrapper. All uses replaced by the wrappee.
+ * alloca.c (record_xmalloc):
+ Prefer record_unwind_protect_ptr to record_unwind_protect with
+ make_save_pointer.
+ * alloca.c (Fgarbage_collect):
+ Prefer record_unwind_protect_void to passing a dummy.
+ * buffer.c (restore_buffer):
+ * window.c (restore_window_configuration):
+ * xfns.c, w32fns.c (do_unwind_create_frame)
+ New wrapper. All record-unwind uses of wrappee changed.
+ * buffer.c (set_buffer_if_live):
+ * callproc.c (call_process_cleanup, delete_temp_file):
+ * coding.c (code_conversion_restore):
+ * dired.c (directory_files_internal_w32_unwind) [WINDOWSNT]:
+ * editfns.c (save_excursion_restore)
+ (subst_char_in_region_unwind, subst_char_in_region_unwind_1)
+ (save_restriction_restore):
+ * eval.c (restore_stack_limits, un_autoload):
+ * fns.c (require_unwind):
+ * keyboard.c (recursive_edit_unwind, tracking_off):
+ * lread.c (record_load_unwind, load_warn_old_style_backquotes):
+ * macros.c (pop_kbd_macro, restore_menu_items):
+ * nsfns.m (unwind_create_frame):
+ * print.c (print_unwind):
+ * process.c (start_process_unwind):
+ * search.c (unwind_set_match_data):
+ * window.c (select_window_norecord, select_frame_norecord):
+ * xdisp.c (unwind_with_echo_area_buffer, unwind_format_mode_line)
+ (fast_set_selected_frame):
+ * xfns.c, w32fns.c (unwind_create_tip_frame):
+ Return void, not a dummy Lisp_Object. All uses changed.
+ * buffer.h (set_buffer_if_live): Move decl here from lisp.h.
+ * callproc.c (call_process_kill):
+ * fileio.c (restore_point_unwind, decide_coding_unwind)
+ (build_annotations_unwind):
+ * insdel.c (Fcombine_after_change_execute_1):
+ * keyboard.c (read_char_help_form_unwind):
+ * menu.c (unuse_menu_items):
+ * minibuf.c (run_exit_minibuf_hook, read_minibuf_unwind):
+ * sound.c (sound_cleanup):
+ * xdisp.c (unwind_redisplay):
+ * xfns.c (clean_up_dialog):
+ * xselect.c (x_selection_request_lisp_error, x_catch_errors_unwind):
+ Accept no args and return void, instead of accepting and returning
+ a dummy Lisp_Object. All uses changed.
+ * cygw32.c (fchdir_unwind):
+ * fileio.c (close_file_unwind):
+ * keyboard.c (restore_kboard_configuration):
+ * lread.c (readevalllop_1):
+ * process.c (wait_reading_process_output_unwind):
+ Accept int and return void, rather than accepting an Emacs integer
+ and returning a dummy object. In some cases this fixes an
+ unlikely bug when the corresponding int is outside Emacs integer
+ range. All uses changed.
+ * dired.c (directory_files_internal_unwind):
+ * fileio.c (do_auto_save_unwind):
+ * gtkutil.c (pop_down_dialog):
+ * insdel.c (reset_var_on_error):
+ * lread.c (load_unwind):
+ * xfns.c (clean_up_file_dialog):
+ * xmenu.c, nsmenu.m (pop_down_menu):
+ * xmenu.c (cleanup_widget_value_tree):
+ * xselect.c (wait_for_property_change_unwind):
+ Accept pointer and return void, rather than accepting an Emacs
+ save value encapsulating the pointer and returning a dummy object.
+ All uses changed.
+ * editfns.c (Fformat): Update the saved pointer directly via
+ set_unwind_protect_ptr rather than indirectly via make_save_pointer.
+ * eval.c (specpdl_func): Remove. All uses replaced by definiens.
+ (unwind_body): New function.
+ (record_unwind_protect): First arg is now a function returning void,
+ not a dummy Lisp_Object.
+ (record_unwind_protect_ptr, record_unwind_protect_int)
+ (record_unwind_protect_void): New functions.
+ (unbind_to): Support SPECPDL_UNWIND_PTR etc.
+ * fileio.c (struct auto_save_unwind): New type.
+ (do_auto_save_unwind): Use it.
+ (do_auto_save_unwind_1): Remove; subsumed by new do_auto_save_unwind.
+ * insdel.c (struct rvoe_arg): New type.
+ (reset_var_on_error): Use it.
+ * lisp.h (SPECPDL_UNWIND_PTR, SPECPDL_UNWIND_INT, SPECPDL_UNWIND_VOID):
+ New constants.
+ (specbinding_func): Remove; there are now several such functions.
+ (union specbinding): New members unwind_ptr, unwind_int, unwind_void.
+ (set_unwind_protect_ptr): New function.
+ * xselect.c: Remove unnecessary forward decls, to simplify maintenance.
+
+ Be simpler and more consistent about reporting I/O errors.
+ * fileio.c (Fcopy_file, Finsert_file_contents, Fwrite_region):
+ Say "Read error" and "Write error", rather than "I/O error", or
+ "IO error reading", or "IO error writing", when a read or write
+ error occurs.
+ * process.c (Fmake_network_process, wait_reading_process_output)
+ (send_process, Fprocess_send_eof, wait_reading_process_output):
+ Capitalize diagnostics consistently. Put "failed foo" at the
+ start of the diagnostic, so that we don't capitalize the
+ function name "foo". Consistently say "failed" for such
+ diagnostics.
+ * sysdep.c, w32.c (serial_open): Now accepts Lisp string, not C string.
+ All callers changed. This is so it can use report_file_error.
+ * sysdep.c (serial_open, serial_configure): Capitalize I/O
+ diagnostics consistently as above.
+
+ * fileio.c (report_file_errno): Fix errno reporting bug.
+ If the file name is neither null nor a pair, package it up as a
+ singleton list. All callers changed, both to this function and to
+ report_file_error. This fixes a bug where the memory allocator
+ invoked by list1 set errno so that the immediately following
+ report_file_error reported the wrong errno value.
+
+ Fix minor problems found by --enable-gcc-warnings.
+ * frame.c (Fhandle_focus_in, Fhandle_focus_out): Return a value.
+ * keyboard.c (kbd_buffer_get_event): Remove unused local.
+
+2013-07-16 Jan Djärv <jan.h.d@swipnet.se>
+
+ * xterm.c (x_focus_changed): Always generate FOCUS_IN_EVENT.
+ Set event->arg to Qt if switch-event shall be generated.
+ Generate FOCUS_OUT_EVENT for FocusOut if this is the focused frame.
+
+ * termhooks.h (enum event_kind): Add FOCUS_OUT_EVENT.
+
+ * nsterm.m (windowDidResignKey): If this is the focused frame, generate
+ FOCUS_OUT_EVENT.
+
+ * keyboard.c (Qfocus_in, Qfocus_out): New static objects.
+ (make_lispy_focus_in, make_lispy_focus_out): Declare and define.
+ (kbd_buffer_get_event): For FOCUS_IN, make a focus_in event if no
+ switch frame event is made. Check ! NILP (event->arg) if X11 (moved
+ from xterm.c). Make focus_out event for FOCUS_OUT_EVENT if NS or X11
+ and there is a focused frame.
+ (head_table): Add focus-in and focus-out.
+ (keys_of_keyboard): Add focus-in and focus-out to Vspecial_event_map,
+ bind to handle-focus-in/out.
+
+ * frame.c (Fhandle_focus_in, Fhandle_focus_out): New functions.
+ (Fhandle_switch_frame): Call Fhandle_focus_in.
+ (syms_of_frame): defsubr handle-focus-in/out.
+
+2013-07-16 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix porting bug to older POSIXish platforms (Bug#14862).
+ * sysdep.c (emacs_pipe): New function, that implements
+ pipe2 (fd, O_CLOEXEC) even on hosts that lack O_CLOEXEC.
+ This should port better to CentOS 5 and to Mac OS X 10.6.
+ All calls to pipe2 changed.
+
+ Prefer list1 (X) to Fcons (X, Qnil) when building lists.
+ This makes the code easier to read and the executable a bit smaller.
+ Do not replace all calls to Fcons that happen to create lists,
+ just calls that are intended to create lists. For example, when
+ creating an alist that maps FOO to nil, use list1 (Fcons (FOO, Qnil))
+ rather than list1 (list1 (FOO)) or Fcons (Fcons (FOO, Qnil), Qnil).
+ Similarly for list2 through list5.
+ * buffer.c (Fget_buffer_create, Fmake_indirect_buffer):
+ * bytecode.c (exec_byte_code):
+ * callint.c (quotify_arg, Fcall_interactively):
+ * callproc.c (Fcall_process, create_temp_file):
+ * charset.c (load_charset_map_from_file)
+ (Fdefine_charset_internal, init_charset):
+ * coding.c (get_translation_table, detect_coding_system)
+ (Fcheck_coding_systems_region)
+ (Fset_terminal_coding_system_internal)
+ (Fdefine_coding_system_internal, Fdefine_coding_system_alias):
+ * composite.c (update_compositions, Ffind_composition_internal):
+ * dired.c (directory_files_internal, file_name_completion)
+ (Fsystem_users):
+ * dispnew.c (Fopen_termscript, bitch_at_user, init_display):
+ * doc.c (Fsnarf_documentation):
+ * editfns.c (Fmessage_box):
+ * emacs.c (main):
+ * eval.c (do_debug_on_call, signal_error, maybe_call_debugger)
+ (Feval, eval_sub, Ffuncall, apply_lambda):
+ * fileio.c (make_temp_name, Fcopy_file, Faccess_file)
+ (Fset_file_selinux_context, Fset_file_acl, Fset_file_modes)
+ (Fset_file_times, Finsert_file_contents)
+ (Fchoose_write_coding_system, Fwrite_region):
+ * fns.c (Flax_plist_put, Fyes_or_no_p, syms_of_fns):
+ * font.c (font_registry_charsets, font_parse_fcname)
+ (font_prepare_cache, font_update_drivers, Flist_fonts):
+ * fontset.c (Fset_fontset_font, Ffontset_info, syms_of_fontset):
+ * frame.c (make_frame, Fmake_terminal_frame)
+ (x_set_frame_parameters, x_report_frame_params)
+ (x_default_parameter, Fx_parse_geometry):
+ * ftfont.c (syms_of_ftfont):
+ * image.c (gif_load):
+ * keyboard.c (command_loop_1):
+ * keymap.c (Fmake_keymap, Fmake_sparse_keymap, access_keymap_1)
+ (Fcopy_keymap, append_key, Fcurrent_active_maps)
+ (Fminor_mode_key_binding, accessible_keymaps_1)
+ (Faccessible_keymaps, Fwhere_is_internal):
+ * lread.c (read_emacs_mule_char):
+ * menu.c (find_and_return_menu_selection):
+ * minibuf.c (get_minibuffer):
+ * nsfns.m (Fns_perform_service):
+ * nsfont.m (ns_script_to_charset):
+ * nsmenu.m (ns_popup_dialog):
+ * nsselect.m (ns_get_local_selection, ns_string_from_pasteboard)
+ (Fx_own_selection_internal):
+ * nsterm.m (append2):
+ * print.c (Fredirect_debugging_output)
+ (print_prune_string_charset):
+ * process.c (Fdelete_process, Fprocess_contact)
+ (Fformat_network_address, set_socket_option)
+ (read_and_dispose_of_process_output, write_queue_push)
+ (send_process, exec_sentinel):
+ * sound.c (Fplay_sound_internal):
+ * textprop.c (validate_plist, add_properties)
+ (Fput_text_property, Fadd_face_text_property)
+ (copy_text_properties, text_property_list, syms_of_textprop):
+ * unexaix.c (report_error):
+ * unexcoff.c (report_error):
+ * unexsol.c (unexec):
+ * xdisp.c (redisplay_tool_bar, store_mode_line_string)
+ (Fformat_mode_line, syms_of_xdisp):
+ * xfaces.c (set_font_frame_param)
+ (Finternal_lisp_face_attribute_values)
+ (Finternal_merge_in_global_face, syms_of_xfaces):
+ * xfns.c (x_default_scroll_bar_color_parameter)
+ (x_default_font_parameter, x_create_tip_frame):
+ * xfont.c (xfont_supported_scripts):
+ * xmenu.c (Fx_popup_dialog, xmenu_show, xdialog_show)
+ (menu_help_callback, xmenu_show):
+ * xml.c (make_dom):
+ * xterm.c (set_wm_state):
+ Prefer list1 (FOO) to Fcons (FOO, Qnil) when creating a list,
+ and similarly for list2 through list5.
+
+2013-07-15 Paul Eggert <eggert@cs.ucla.edu>
+
+ * callproc.c (Fcall_process_region): Fix minor race and tune.
+ (create_temp_file): New function, with the temp-file-creation part
+ 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;
+ 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
+ empty, redirect from /dev/null rather than from a newly created
+ empty temp file; this avoids unnecessary file system traffic.
+
+2013-07-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * filelock.c (create_lock_file) [!HAVE_MKOSTEMP && !HAVE_MKSTEMP]:
+ Simplify by making this case like the other two. This is a bit
+ slower on obsolete hosts, but the extra complexity isn't worth it.
+
+ * callproc.c (child_setup, relocate_fd) [!DOS_NT]:
+ * process.c (create_process) [!DOS_NT]:
+ Remove now-unnecessary calls to emacs_close.
+
+2013-07-13 Eli Zaretskii <eliz@gnu.org>
+
+ * w32term.c (x_draw_hollow_cursor): Delete the brush object when
+ returning early. (Bug#14850)
+
+ * coding.c (syms_of_coding): Set up inhibit-null-byte-detection
+ and inhibit-iso-escape-detection attributes of 'undecided'.
+ (Bug#14822)
+
+2013-07-13 Paul Eggert <eggert@cs.ucla.edu>
+
+ * deps.mk (sysdep.o): Remove dependency on ../lib/ignore-value.h.
+ Reported by Herbert J. Skuhra in
+ <http://lists.gnu.org/archive/html/emacs-devel/2013-07/msg00455.html>.
+
+ Don't lose top specpdl entry when memory is exhausted.
+ * eval.c (grow_specpdl): Increment specpdl top by 1 and check for
+ specpdl overflow here, to simplify callers; all callers changed.
+ Always reserve an unused entry at the stack top; this avoids
+ losing the top entry's information when memory is exhausted.
+
+2013-07-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ Clean up errno reporting and fix some errno-reporting bugs.
+ * callproc.c (Fcall_process):
+ * fileio.c (Fcopy_file, Finsert_file_contents, Fwrite_region):
+ * process.c (create_process, Fmake_network_process):
+ * unexaix.c (report_error):
+ * unexcoff.c (report_error):
+ Be more careful about reporting the errno of failed operations.
+ The code previously reported the wrong errno sometimes.
+ Also, prefer report_file_errno to setting errno + report_file_error.
+ (Fcall_process): Look at openp return value rather than at path,
+ as that's a bit faster and clearer when there's a numeric predicate.
+ * fileio.c (report_file_errno): New function, with most of the
+ old contents of report_file_error.
+ (report_file_error): Use it.
+ (Ffile_exists_p, Ffile_accessible_directory_p):
+ Set errno to 0 when it is junk.
+ * fileio.c (Faccess_file):
+ * image.c (x_create_bitmap_from_file):
+ Use faccessat rather than opening the file, to avoid the hassle of
+ having a file descriptor open.
+ * lisp.h (report_file_errno): New decl.
+ * lread.c (Flocate_file_internal): File descriptor 0 is valid, too.
+
+ Minor EBADF fixes.
+ * process.c (create_process, wait_reading_process_output) [AIX]:
+ Remove obsolete SIGHUP-related code, as Emacs no longer disables
+ SIGHUP, so EBADF is no longer acceptable here (it wouldn't work in
+ a multithreaded environment anyway).
+ * sysdep.c (emacs_close): It's not dangerous to invoke emacs_close (-1).
+
+2013-07-12 Andreas Schwab <schwab@linux-m68k.org>
+
+ * image.c (x_find_image_file): Don't close a remote file handle.
+
+2013-07-12 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix races with threads and file descriptors.
+ * callproc.c (Fcall_process_region):
+ * dired.c (open_directory):
+ * emacs.c (main, Fdaemon_initialized):
+ * image.c (x_find_image_file):
+ * inotify.c (Finotify_rm_watch):
+ * lread.c (Flocate_file_internal):
+ * process.c (Fnetwork_interface_list, Fnetwork_interface_info):
+ * term.c (term_mouse_moveto, init_tty):
+ * termcap.c (tgetent):
+ * unexaix.c, unexcoff.c (report_error, report_error_1, adjust_lnnoptrs)
+ * unexaix.c, unexcoff.c, unexcw.c, unexelf.c (unexec):
+ * unexhp9k800.c, unexmacosx.c (unexec):
+ * callproc.c (Fcall_process_region):
+ Use emacs_close, not close.
+ * sysdep.c (POSIX_CLOSE_RESTART, posix_close) [!POSIX_CLOSE_RESTART]:
+ New macro and function, which emulates the POSIX_CLOSE_RESTART macro
+ and posix_close function on current platforms (which all lack them).
+ (emacs_close): Use it. This should fix the races on GNU/Linux and
+ on AIX and on future platforms that support POSIX_CLOSE_RESTART,
+ and it should avoid closing random victim file descriptors on
+ other platforms.
+
+2013-07-11 Paul Eggert <eggert@cs.ucla.edu>
+
+ * inotify.c (uninitialized): Remove. All uses replaced by -1.
+ (Finotify_add_watch): Simplify, since -1 means uninitialized now.
+ Touch up doc a bit.
+
+ * eval.c (backtrace_function, backtrace_args): Now EXTERNALLY_VISIBLE.
+ This is for .gdbinit xbacktrace.
+
+ * sysdep.c, term.c, termcap.c, terminal.c: Integer-related minor fixes.
+ * sysdep.c (emacs_get_tty): Return void, since nobody uses the value.
+ (emacs_set_tty): Now static.
+ * sysdep.c (emacs_set_tty, tabs_safe_p, emacs_close):
+ * term.c (tty_capable_p, tty_default_color_capabilities)
+ (get_tty_terminal, term_mouse_movement)
+ (handle_one_term_event, init_tty, maybe_fatal):
+ * termcap.c (tgetst1, struct termcap_buffer, valid_filename_p)
+ (tgetent, scan_file, name_match, compare_contin):
+ * terminal.c (get_terminal):
+ Use bool for boolean.
+ * sysdep.c (init_system_name): Don't overflow stack on huge hostname.
+ Prefer char to unsigned char if either will do.
+ * term.c (OUTPUT, turn_on_face): Omit unnecessary casts to int.
+ (tty_write_glyphs): Prefer int to unsigned.
+ (produce_glyphless_glyph): Remove 2nd (unused) int arg.
+ All callers changed.
+ * termcap.c (tprint, main) [TEST]: Remove non-working test.
+
+2013-07-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port to C89.
+ * bytecode.c (BYTE_CODE_THREADED): Do not define if __STRICT_ANSI__.
+ (B__dummy__): New dummy symbol, to pacify C89.
+ * dbusbind.c (XD_DEBUG_MESSAGE): Omit debugging on C89 hosts, since
+ they can't grok varargs macros.
+ * dispnew.c (add_window_display_history)
+ (add_frame_display_history):
+ * print.c (print_object):
+ * xdisp.c (debug_method_add):
+ Use %p printf format only for void pointers.
+ * emacs.c (usage_message): New constant, replacing ...
+ (USAGE1, USAGE2, USAGE3): Remove; they were too long for C89.
+ (main): Adjust to usage reorg.
+ * fns.c (syms_of_fns):
+ * profiler.c (syms_of_profiler):
+ Don't use non-constant struct initializers.
+ * gnutls.h (gnutls_initstage_t):
+ * lisp.h (enum Lisp_Fwd_Type):
+ * lread.c (lisp_file_lexically_bound_p):
+ * xsettings.c (anonymous enum):
+ Remove trailing comma.
+ * xsettings.c (apply_xft_settings): Use %f, not %lf; %lf is a C99ism.
+ * lisp.h (ENUM_BF): Use unsigned if pedantic.
+ (DEFUN_FUNCTION_INIT): New macro, that falls back on a cast if pre-C99.
+ (DEFUN): Use it.
+ * regex.c (const_re_char): New type, to pacify strict C89.
+ All uses of 'const re_char' replaced to use it.
+ * regex.h (_Restrict_): Rename from __restrict, to avoid clash
+ with glibc when strict C89. This change is imported from gnulib.
+ All uses changed.
+ (_Restrict_arr_): Rename from __restrict_arr, similarly.
+ * sysdep.c (time_from_jiffies) [!HAVE_LONG_LONG_INT]:
+ Omit GNU_LINUX implementation, since it requires long long.
+ * xterm.c (x_draw_underwave):
+ Do not assume the traditional order of struct's members.
+ (x_term_init): Rewrite to avoid the need for non-constant structure
+ initializers.
+
+ Syntax cleanup, mostly replacing macros with functions.
+ This removes the need for the syntax_temp hack.
+ * search.c: Include syntax.h after buffer.h, since syntax.h uses BVAR.
+ * syntax.c (SYNTAX_INLINE): New macro.
+ (SYNTAX_FLAGS_COMSTART_FIRST, SYNTAX_FLAGS_COMSTART_SECOND)
+ (SYNTAX_FLAGS_COMEND_FIRST, SYNTAX_FLAGS_COMEND_SECOND)
+ (SYNTAX_FLAGS_PREFIX, SYNTAX_FLAGS_COMMENT_STYLEB)
+ (SYNTAX_FLAGS_COMMENT_STYLEC, SYNTAX_FLAGS_COMMENT_STYLEC2)
+ (SYNTAX_FLAGS_COMMENT_NESTED, SYNTAX_FLAGS_COMMENT_STYLE)
+ (SYNTAX_COMEND_FIRST): Now functions, not macros.
+ (ST_COMMENT_STYLE, ST_STRING_STYLE, INTERVALS_AT_ONCE):
+ Now constants, not macros.
+ (syntax_temp) [!__GNUC__]: Remove.
+ (SYNTAX_PREFIX): Remove; all uses replaced by syntax_prefix_flag_p.
+ (syntax_prefix_flag_p): Move implementation of SYNTAX_PREFIX here.
+ (SET_RAW_SYNTAX_ENTRY, SET_RAW_SYNTAX_ENTRY_RANGE, SYNTAX_MATCH)
+ (SETUP_SYNTAX_TABLE, SETUP_SYNTAX_TABLE_FOR_OBJECT):
+ Move here from syntax.h; now functions, not macros. Except for the
+ last function, these are static since only syntax.c uses them.
+ (syntax_multibyte): Rename from SYNTAX_WITH_MULTIBYTE_CHECK.
+ All uses changed. Now a function, not a macro; use this fact
+ to simplify the code.
+ (scan_lists, scan_sexps_forward): Remove workarounds for ancient
+ compiler bugs; no longer relevant.
+ * syntax.h: Use INLINE_HEADER_BEGIN, INLINE_HEADER_END.
+ (SYNTAX_INLINE): New macro.
+ (struct gl_state_s, gl_state): Move earlier, so that it's in scope
+ for the new functions. Use bool for boolean member.
+ (SYNTAX_ENTRY, SYNTAX, SYNTAX_WITH_FLAGS, SYNTAX_MATCH)
+ (SYNTAX_TABLE_BYTE_TO_CHAR, UPDATE_SYNTAX_TABLE_FORWARD)
+ (UPDATE_SYNTAX_TABLE_BACKWARD, UPDATE_SYNTAX_TABLE)
+ (SETUP_BUFFER_SYNTAX_TABLE):
+ Now extern inline functions, not macros.
+ (CURRENT_SYNTAX_TABLE, SYNTAX_ENTRY_INT):
+ Remove; all uses replaced by implementation.
+ (syntax_temp) [!__GNUC__]: Remove decl.
+ (SETUP_SYNTAX_TABLE_FOR_OBJECT): New decl.
+
+2013-07-10 Jan Djärv <jan.h.d@swipnet.se>
+
+ * emacs.c (main): Fix syntax error.
+
+2013-07-10 Paul Eggert <eggert@cs.ucla.edu>
+
+ Timestamp fixes for undo (Bug#14824).
+ * atimer.c (schedule_atimer):
+ * fileio.c (Ffile_newer_than_file_p):
+ Minor cleanup: use EMACS_TIME_LT so that we can remove EMACS_TIME_GT.
+ * buffer.c (buffer-undo-list): Document (t . 0) and (t . -1).
+ * fileio.c (Fclear_visited_file_modtime): Move to lisp/files.el.
+ (syms_of_fileio): Remove Sclear_visited_file_name.
+ (Fvisited_file_modtime): Return -1, not (-1 ...), when the visited
+ file doesn't exist; this avoids an ambiguity with negative timestamps.
+ (Fset_visited_file_modtime): Accept -1 and 0 as time-list arg.
+ * systime.h (make_emacs_time, invalid_emacs_time):
+ Don't assume struct timespec layout; POSIX doesn't guarantee it.
+ (EMACS_TIME_NE, EMACS_TIME_GT, EMACS_TIME_GE): Remove.
+ * undo.c (record_first_change): Push (visited-file-modtime) onto
+ undo list rather than reimplementing it by hand, incorrectly.
+
+2013-07-09 Ken Brown <kbrown@cornell.edu>
+
+ * sheap.c (STATIC_HEAP_SIZE) [__x86_64__]: Increase to 18MB.
+
+2013-07-09 Juanma Barranquero <lekktu@gmail.com>
+
+ * makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/sysdep.$(O)): Update.
+
+2013-07-09 Paul Eggert <eggert@cs.ucla.edu>
+
+ Handle errno and exit status a bit more carefully.
+ * callproc.c (child_setup) [!DOS_NT]: Don't try to stuff an error
+ number into an exit status. Instead, use EXIT_CANCELED.
+ (child_setup) [!MSDOS]: Avoid possible deadlock with vfork.
+ * callproc.c (relocate_fd):
+ * emacs.c (close_output_streams, main):
+ * process.c (create_process):
+ * sysdep.c (sys_subshell) [!DOS_NT || !WINDOWSNT]:
+ Use emacs_perror for simplicity.
+ * callproc.c (relocate_fd, main):
+ * sysdep.c (sys_subshell):
+ Exit with EXIT_CANCELED etc., not 1, when exec setup fails.
+ (shut_down_emacs): Use emacs_write, not write.
+ * emacs.c, sysdep.c: Don't include <ignore-value.h>.
+ * fileio.c (Fcopy_file, e_write):
+ * nsterm.m (ns_select):
+ * process.c (send_process):
+ * sound.c (vox_write):
+ Use emacs_write_sig, not emacs_write.
+ * lisp.h (emacs_write_sig, emacs_perror): New decls.
+ * process.h (EXIT_CANCELED), EXIT_CANNOT_INVOKE, EXIT_ENOENT):
+ New constants.
+ * sysdep.c (emacs_backtrace): Use emacs_write, not ignore_value
+ of write.
+ (emacs_full_write): New function.
+ (emacs_write): Rewrite to use it.
+ (emacswrite_sig, emacs_perror): New functions.
+ * xrdb.c (fatal): Don't invoke perror, since errno might be garbage.
+
+2013-07-08 Magnus Henoch <magnus.henoch@gmail.com> (tiny change)
+
+ * image.c (imagemagick_load_image): Do not use MagickExportImagePixels
+ on NS even if it is present. Pixmap on NS is a void*.
+
+2013-07-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ Port to Ubuntu 10 (Bug#14803).
+ Problem reported by T.V. Raman.
+ * process.c (close_on_exec, accept4, process_socket):
+ Define these if !HAVE_ACCEPT4, not if !SOCK_CLOEXEC.
+
+2013-07-07 Eli Zaretskii <eliz@gnu.org>
+
+ * w32.c (sys_dup): Declare prototype.
+
+ * filelock.c:
+ * emacs.c:
+ * callproc.c [WINDOWSNT]: Include sys/socket.h.
+
+2013-07-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ Make file descriptors close-on-exec when possible (Bug#14803).
+ This simplifies Emacs a bit, since it no longer needs to worry
+ about closing file descriptors by hand in some cases.
+ It also fixes some unlikely races. Not all such races, as
+ libraries often open files internally without setting
+ close-on-exec, but it's an improvement.
+ * alloc.c (valid_pointer_p) [!WINDOWSNT]:
+ * callproc.c (Fcall_process) [!MSDOS]:
+ * emacs.c (main) [!DOS_NT]:
+ * nsterm.m (ns_term_init):
+ * process.c (create_process):
+ Use 'pipe2' with O_CLOEXEC instead of 'pipe'.
+ * emacs.c (Fcall_process_region) [HAVE_MKOSTEMP]:
+ * filelock.c (create_lock_file) [HAVE_MKOSTEMP]:
+ Prefer mkostemp with O_CLOEXEC to mkstemp.
+ * callproc.c (relocate_fd) [!WINDOWSNT]:
+ * emacs.c (main): Use F_DUPFD_CLOEXEC, not plain F_DUPFD.
+ No need to use fcntl (..., F_SETFD, FD_CLOEXEC), since we're
+ now using pipe2.
+ * filelock.c (create_lock_file) [! HAVE_MKOSTEMP]:
+ Make the resulting file descriptor close-on-exec.
+ * lisp.h, lread.c, process.c (close_load_descs, close_process_descs):
+ * lread.c (load_descriptor_list, load_descriptor_unwind):
+ Remove; no longer needed. All uses removed.
+ * process.c (SOCK_CLOEXEC): Define to 0 if not supplied by system.
+ (close_on_exec, accept4, process_socket) [!SOCK_CLOEXEC]:
+ New functions.
+ (socket) [!SOCK_CLOEXEC]: Supply a substitute.
+ (Fmake_network_process, Fnetwork_interface_list):
+ (Fnetwork_interface_info, server_accept_connection):
+ Make newly-created socket close-on-exec.
+ * sysdep.c (emacs_open, emacs_fopen):
+ Make new-created descriptor close-on-exec.
+ * w32.c (fcntl): Support F_DUPFD_CLOEXEC well enough for Emacs.
+ * w32.c, w32.h (pipe2): Rename from 'pipe', with new flags arg.
+
+2013-07-07 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsterm.m (sendEvent:): Propagate keyboard events to modal windows
+ for NS_IMPL_GNUSTEP.
+
+2013-07-07 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix openp errno handling.
+ * callproc.c (Fcall_process): Preserve openp errno around close.
+ * lread.c (openp): Set errno when returning -1, as some callers
+ expect this.
+
+2013-07-06 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsterm.m (sendEvent:): Handle NSAPP_DATA2_RUNFILEDIALOG.
+
+ * nsterm.h (NSSavePanel): Update comment.
+ (NSAPP_DATA2_RUNFILEDIALOG): Define.
+ (ns_run_file_dialog): Declare.
+
+ * nsfns.m: Remove panelOK.
+ (ns_fd_data): New.
+ (ns_run_file_dialog): New function.
+ (Fns_read_file_name): Fill in ns_fd_data, post an event and start the
+ event loop, so file dialog is popped up by ns_run_file_dialog, called
+ by sendEvent (Bug#14578).
+ (EmacsSavePanel, EmacsOpenPanel): Remove ok and cancel methods.
+
+2013-07-06 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (default_line_pixel_height): New function.
+ (pos_visible_p, move_it_vertically_backward, try_scrolling)
+ (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.
+
+ * dispextern.h (default_line_pixel_height): Add prototype.
+
+ * frame.c (x_set_line_spacing): Accept a float value for
+ line-spacing parameter, per the documentation.
+
+ * data.c (Fmultibyte_string_p): Doc fix.
+
+2013-07-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use emacs_open more consistently when opening files.
+ This handles EINTR more consistently now, and makes it easier
+ to introduce other uniform changes to file descriptor handling.
+ * src/systdio.h: New file.
+ * src/buffer.c (mmap_init):
+ * cygw32.c (chdir_to_default_directory):
+ * dispnew.c (Fopen_termscript):
+ * emacs.c (Fdaemon_initialized):
+ * fileio.c (Fdo_auto_save):
+ * image.c (slurp_file, png_load_body, jpeg_load_body):
+ * keyboard.c (Fopen_dribble_file):
+ * lread.c (Fload):
+ * print.c (Fredirect_debugging_output):
+ * sysdep.c (get_up_time, procfs_ttyname, procfs_get_total_memory):
+ * termcap.c (tgetent):
+ * unexaix.c, unexcoff.c (unexec, adjust_lnnoptrs):
+ * unexcw.c, unexelf.c, unexhp9k800.c, unexmacosx.c (unexec):
+ * w32term.c (w32_initialize) [CYGWIN]:
+ * xfaces.c (Fx_load_color_file):
+ Use emacs_open instead of plain open, and emacs_fopen instead of
+ plain fopen.
+ * dispnew.c, fileio.c, image.c, keyboard.c, lread.c, print.c, sysdep.c:
+ * xfaces.c: Include sysstdio.h rather than stdio.h, for emacs_fopen.
+ * callproc.c (default_output_mode): New constant.
+ (Fcall_process): Use it to call emacs_open instead of plain creat.
+ * dispnew.c (Fopen_termscript): Fix minor race in opening termscript.
+ * sysdep.c (emacs_open): Add commentary and don't call file name "path".
+ (emacs_fopen): New function.
+ * unexaix.c, unexcoff.c, unexelf.c, unexhp9k800.c, unexmacosx.c:
+ Include <lisp.h>, for emacs_open.
+ * unexelf.c (fatal): Remove decl; not needed with <lisp.h> included.
+
+ Remove duplicate #include directives.
+ * alloc.c [GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES]:
+ * xfaces.c:
+ Don't include stdio.h twice.
+ * buffer.c [USE_MMAP_FOR_BUFFERS]:
+ Don't include sys/types.h or stdio.h twice.
+ * fileio.c [WINDOWSNT | MSDOS]: Don't include fcntl.h twice.
+ * lread.c: Don't include coding.h twice.
+ * nsfont.m: Don't include frame.h twice.
+ * process.c [HAVE_RES_INIT]: Don't include <netinet/in.h> twice.
+ * ralloc.c: Don't include <unistd.h> twice.
+ * xdisp.c: Don't include font.h twice.
+ * xterm.c: Don't include fontset.h twice.
+ * xterm.h [USE_X_TOOLKIT]: Don't include X11/StringDefs.h twice.
+
+2013-07-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Scale ImageMagick images more carefully.
+ * image.c (scale_image_size) [HAVE_IMAGEMAGICK]: New function.
+ (compute_image_size): Use it. Define only if HAVE_IMAGEMAGICK.
+ Be more careful about avoiding undefined behavior after
+ integer overflow and division by zero.
+
+2013-07-04 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * w32fns.c (Qgeometry, Qworkarea, Qmm_size, Qframes): New variables.
+ (syms_of_w32fns): DEFSYM them.
+ (MONITORINFOF_PRIMARY, SM_XVIRTUALSCREEN, SM_YVIRTUALSCREEN)
+ (CCHDEVICENAME): Define macros if not defined.
+ (struct MONITOR_INFO_EX): New struct.
+ (MonitorEnum_Proc, EnumDisplayMonitors_Proc): New prototypes.
+ (enum_display_monitors_fn): New variable.
+ (globals_of_w32fns): Initialize it.
+ (Fx_display_pixel_width, Fx_display_pixel_height)
+ (Fx_display_mm_height, Fx_display_mm_width): Mention behavior on
+ multi-monitor setups in docstrings.
+ (Fx_display_mm_height, Fx_display_mm_width): Approximate whole
+ screen size by primary monitor's millimeter per pixel.
+ (w32_monitor_enum, w32_display_monitor_attributes_list)
+ (w32_display_monitor_attributes_list_fallback)
+ (Fw32_display_monitor_attributes_list): New functions.
+ (syms_of_w32fns): Defsubr Sw32_display_monitor_attributes_list.
+
+ * w32term.c (SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN): Define macros
+ if not defined.
+ (x_display_pixel_height, x_display_pixel_width): Use GetSystemMetrics.
+
+2013-07-04 Michael Albinus <michael.albinus@gmx.de>
+
+ * fileio.c (Qfile_notify_error): New error symbol.
+
+ * gfilenotify.c (Fgfile_add_watch, Fgfile_rm_watch):
+ * inotify.c (inotify_callback, symbol_to_inotifymask)
+ (Finotify_add_watch, Finotify_rm_watch): Use it.
+ (inotifyevent_to_event): Exchange order of cookie and file name.
+ (Finotify_add_watch): Adapt docstring.
+
+ * lisp.h (Qfile_notify_error): Declare.
+
+2013-07-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Try again to fix FreeBSD bug re multithreaded memory alloc (Bug#14569).
+ * emacs.c (main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
+ Do not clear _malloc_thread_enabled_p, undoing the previous change,
+ which did not work (see <http://bugs.gnu.org/14569#307>).
+ (main): Do not invoke malloc_enable_thread if (! CANNOT_DUMP
+ && (!noninteractive || initialized)). This attempts to thread
+ the needle between the Scylla of FreeBSD and the Charybdis of Cygwin.
+
+2013-07-04 Juanma Barranquero <lekktu@gmail.com>
+
+ * image.c (x_to_xcolors) [HAVE_NTGUI]: Remove unused var `hdc'.
+ (x_build_heuristic_mask) [HAVE_NTGUI]: Remove unused var `frame_dc'.
+
+2013-07-04 Paul Eggert <eggert@cs.ucla.edu>
+
+ Try to fix FreeBSD bug re multithreaded memory allocation (Bug#14569).
+ * emacs.c (main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
+ Clear _malloc_thread_enabled_p at startup. Reported by Ashish SHUKLA in
+ <http://lists.gnu.org/archive/html/emacs-devel/2013-07/msg00088.html>.
+
+2013-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ * sysdep.c (sys_siglist) [HAVE_DECL___SYS_SIGLIST]:
+ Define to __sys_siglist.
+
+2013-07-02 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (IT_OVERFLOW_NEWLINE_INTO_FRINGE): Don't disallow
+ word-wrap, so that overflow-newline-into-fringe would work in
+ visual-line-mode. (Bug#2749)
+ (move_it_in_display_line_to): When the last scanned display
+ element fits exactly on the display line, and
+ overflow-newline-into-fringe is non-nil, but wrap_it is valid,
+ don't return MOVE_NEWLINE_OR_CR, but instead back up to the last
+ wrap point and return MOVE_LINE_CONTINUED. Fixes problems with
+ finding buffer position that corresponds to pixel coordinates,
+ e.g. in buffer_posn_from_coords.
+
+2013-07-02 Jan Djärv <jan.h.d@swipnet.se>
+
+ * process.c (handle_child_signal): Call catch_child_signal if
+ NS_IMPL_GNUSTEP.
+
+2013-07-02 Paul Eggert <eggert@cs.ucla.edu>
+
+ Don't convert function pointers to void * and back.
+ It isn't portable C, and it's easy enough to avoid.
+ * alloc.c: Verify SAVE_FUNCPOINTER bits, too.
+ (make_save_value): Add support for SAVE_FUNCPOINTER.
+ * keymap.c (map_keymap_char_table_item, map_keymap_internal):
+ * print.c (print_object):
+ Distinguish function from object pointers.
+ * lisp.h (SAVE_FUNCPOINTER): New constant.
+ (SAVE_SLOT_BITS): Adjust to it.
+ (SAVE_TYPE_FUNCPTR_PTR_OBJ): New constant, replacing
+ SAVE_TYPE_PTR_PTR_OBJ. Change the only use.
+ (voidfuncptr): New typedef.
+ (struct Lisp_Save_Value): New member data[0].funcpointer.
+ (XSAVE_FUNCPOINTER): New function.
+
+ Simplify buildobj processing.
+ * Makefile.in (buildobj.h): Make it a sequence of strings each
+ followed by comma, rather than a single string. Put it into a
+ .tmp file in case there's an error while generating it.
+ (gl-stamp): Use .tmp for temp files.
+ (mostlyclean): Clean .tmp files.
+ * doc.c (buildobj): Move to just the routine that needs it.
+ It's now an array of strings, so processing is simpler.
+
+2013-07-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix bug re noninteractive multithreaded memory allocation (Bug#14569).
+ * emacs.c (malloc_enable_thread): Hoist extern decl to top level.
+ (main) [HAVE_PTHREAD && !SYSTEM_MALLOC && !DOUG_LEA_MALLOC]:
+ Invoke malloc_enable_thread even when not interactive.
+ Problem reported by Ken Brown in <http://bugs.gnu.org/14569#275>.
+ * process.c (init_process_emacs) [CYGWIN]: Tickle glib even
+ in this case, since the underlying bug has now been fixed.
+
+2013-07-01 Juanma Barranquero <lekktu@gmail.com>
+
+ * emacs.c (Fkill_emacs): Expand Vauto_save_list_file_name before
+ unlinking it (bug#14691).
+
+2013-06-30 Michal Nazarewicz <mina86@mina86.com>
+
+ * buffer.c (FKill_buffer): Run `kill-buffer-query-functions'
+ before checking whether buffer is modified. This lets
+ `kill-buffer-query-functions' cancel killing of the buffer or save
+ its content before `kill-buffer' asks user the "Buffer %s
+ modified; kill anyway?" question.
+
+2013-06-30 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsfns.m (handlePanelKeys): Don't process Command+Function keys.
+ Let the super performKeyEquivalent deal with them (Bug#14747).
+
+2013-06-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * widget.c (resize_cb): Remove unused local.
+
+ Do not use GTK 3 if it exists but cannot be compiled.
+ * xmenu.c (x_menu_wait_for_event) [!USE_GTK]:
+ * xterm.c (x_error_handler) [!USE_GTK]:
+ Do not use GTK 3.
+
+ * intervals.c (get_local_map): Actually clip POSITION (Bug#14753).
+
+2013-06-30 Eli Zaretskii <eliz@gnu.org>
+
+ * intervals.c (get_local_map): Instead of aborting, clip POSITION
+ to the valid range of values. (Bug#14753)
+
+ * xdisp.c (Fmove_point_visually): Invalidate the cursor position
+ when moving point by using the current glyph matrix. This avoids
+ the need to force redisplay when this function is called in a
+ loop.
+
+2013-06-29 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix minor problems found by static checking.
+ * coding.c (encode_inhibit_flag, inhibit_flag): New functions.
+ Redo the latter's body to sidestep GCC parenthesization warnings.
+ (setup_coding_system, detect_coding, detect_coding_system): Use them.
+ * coding.c (detect_coding, detect_coding_system):
+ * coding.h (struct undecided_spec):
+ Use bool for boolean.
+ * image.c (QCmax_width, QCmax_height): Now static.
+ * xdisp.c (Fmove_point_visually): Remove unused local.
+
+2013-06-29 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (Fmove_point_visually): New function.
+
+2013-06-28 Kenichi Handa <handa@gnu.org>
+
+ * coding.h (define_coding_undecided_arg_index): New enum.
+ (coding_attr_index): New members
+ coding_attr_undecided_inhibit_null_byte_detection,
+ coding_attr_undecided_inhibit_iso_escape_detection,
+ coding_attr_undecided_prefer_utf_8.
+ (undecided_spec): New struct.
+ (struct coding_system): New member `undecided' of the member
+ `spec'.
+
+ * coding.c (setup_coding_system): Handle CODING->spec.undecided.
+ (detect_coding): Likewise.
+ (detect_coding_system): Likewise.
+ (Fdefine_coding_system_internal): New coding system properties
+ :inhibit-null-byte-detection, :inhibit-iso-escape-detection, and
+ :prefer-utf-8.
+ (syms_of_coding): Adjust for coding_arg_undecided_max.
+
+2013-06-28 Paul Eggert <eggert@cs.ucla.edu>
+
+ * image.c (x_from_xcolors): Remove unused local.
+
2013-06-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Defer image data transfer between X client and server until actual
(x_clear_image_1): New arg `flags' instead of 3 bools `pixmap_p',
`mask_p', and `colors_p'. All uses changed.
(x_clear_image_1) [HAVE_X_WINDOWS]: Destroy `ximg' and `mask_img'.
- (CLEAR_IMAGE_PIXMAP, CLEAR_IMAGE_MASK, CLEAR_IMAGE_COLORS): New
- macros for `flags' arg to x_clear_image_1.
+ (CLEAR_IMAGE_PIXMAP, CLEAR_IMAGE_MASK, CLEAR_IMAGE_COLORS):
+ New macros for `flags' arg to x_clear_image_1.
(postprocess_image, xpm_load_image, x_build_heuristic_mask)
(png_load_body): Use x_clear_image_1 instead of Free_Pixmap.
(ZPixmap, XGetImage) [HAVE_NS]: Remove.
* floatfns.c (Flog10): Move to Lisp (marked obsolete there).
-2013-06-20 Rüdiger Sonderfeld <ruediger@c-plusplus.de>
+2013-06-20 Rüdiger Sonderfeld <ruediger@c-plusplus.de>
* floatfns.c (Flog) [HAVE_LOG2]: Use log2 if available and if the
base is 2; this is more accurate.
* textprop.c (property_set_type): New enum.
(add_properties): Allow appending/prepending text properties.
(add_text_properties_1): Factored out of Fadd_text_properties.
- (Fadd_text_properties): Moved all the code into
+ (Fadd_text_properties): Move all the code into
add_text_properties_1.
(Fadd_face_text_property): New function that calls
add_text_properties_1.
Now static.
* lisp.h: Remove the abovementioned defns and decls.
- Use functions, not macros, for XINT etc. (Bug#11935).
+ Use functions, not macros, for XINT etc (Bug#11935).
In lisp.h, prefer functions to function-like macros, and
constants to object-like macros, when either will do. This:
. simplifies use, as there's no more need to worry about
(VALMASK): Also a constant, for benefit of old GDB.
(LISP_INT_TAG_P): Remove; no longer needed as the only caller
is INTEGERP, which can fold it in.
- (XLI, XIL, XHASH, XTYPE,XINT, XFASTINT, XUINT)
+ (XLI, XIL, XHASH, XTYPE, XINT, XFASTINT, XUINT)
(make_number, XPNTR, XUNTAG, EQ, XCONS, XVECTOR, XSTRING, XSYMBOL)
(XFLOAT, XPROCESS, XWINDOW, XTERMINAL, XSUBR, XBUFFER, XCHAR_TABLE)
(XSUB_CHAR_TABLE, XBOOL_VECTOR, make_lisp_ptr, CHECK_TYPE)
(Fxw_color_values): Use EmacsCGFloat
(Fns_display_monitor_attributes_list): Only get screen number for
Cocoa.
- (getDirectory, getFilename): Removed from EmacsOpenPanel and
+ (getDirectory, getFilename): Remove from EmacsOpenPanel and
EmacsSavePanel.
(EmacsOpenPanel:ok:): Use ns_filename_from_panel and
ns_directory_from_panel.