X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/4195afc389bb0e5ed5aa749e7606a710e07a72d1..94fcd171894e3a14d3548c028c4229229e32d184:/src/ChangeLog diff --git a/src/ChangeLog b/src/ChangeLog index 73e24bcf82..759f66bc1b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,805 @@ +2013-08-12 Paul Eggert + + 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 . + (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 + + * 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 + + * 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 + + * 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 + + 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 + + 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 + + * xterm.c (x_error_handler): Also ignore BadWindow for X_SetInputFocus, + don't check minor_code (Bug#14417). + +2013-08-09 Eli Zaretskii + + * 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 + + 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 + + * 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 + + * 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 + + 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 + + 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 + + * 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 + + * 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 + + * w32term.c (w32fullscreen_hook): Really maximize frame when + asked for (Bug#14841). + +2013-08-07 Dmitry Antipov + + 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 + + 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 + + * window.c (window_scroll, window_scroll_pixel_based) + (window_scroll_line_based): Use bool for booleans. + +2013-08-06 Paul Eggert + + * 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 + + 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 + + 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 + + * lisp.mk (lisp): Add nadvice.elc. + +2013-08-05 Dmitry Antipov + + 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 + + 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 + + * 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 + + * 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 + + * 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 + + 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 + + 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 + + * 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 + + 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 + + * 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 + + * 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 + + * 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 + + * fileio.c, fns.c (merge): Move extern decl from here ... + * lisp.h (merge): ... to here. + +2013-08-01 Dmitry Antipov + + 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 + at http://lists.gnu.org/archive/html/emacs-devel/2013-08/msg00006.html. + +2013-08-01 Dmitry Antipov + + * 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 + + 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 + + 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 + + * 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 + + 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 + + * 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 + + * 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 + + 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 + + * 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 + + * 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 + + * 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 + + * fns.c (toplevel): Remove comment before Fsafe_length because + it checks for QUIT. + +2013-07-28 Paul Eggert + + * frame.c (delete_frame): Avoid unnecessary 'this_f' test (Bug#14970). + +2013-07-28 Eli Zaretskii + + * w32fns.c (w32_wnd_proc) : 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 + + * w32term.c (w32_read_socket) : 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 + + * process.c (Fprocess_list): Doc fix. + + * w32term.c (w32_read_socket) : Warn about frame + being re-exposed only if it didn't ask to become visible. + : 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 + + 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 + + * 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 + + * fileio.c (Finsert_file_contents): Avoid double-close (Bug#14936). + +2013-07-24 Eli Zaretskii + + * 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 + + * alloc.c (make_save_ptr): Define if HAVE_NTGUI is defined + (Bug#14944). + +2013-07-24 Paul Eggert + + * 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 + . + +2013-07-23 Glenn Morris + + * Makefile.in ($(etc)/DOC, temacs$(EXEEXT)): Ensure etc/ exists. + +2013-07-23 Paul Eggert + + 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 + + * callproc.c (child_setup)[!WINDOWSNT]: Move exec_errno and pid + here to silence compiler warnings. + +2013-07-22 Paul Eggert + + * sysdep.c (frame) [__FreeBSD__]: #define to freebsd_frame + when including , to prevent Sparc/ARM machine/frame.h + from messing up Emacs's 'struct frame' (Bug#14923). + +2013-07-21 Paul Eggert + + * 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 + + * nsterm.m (sendEvent:): Skip mouse moved if no dialog and no Emacs + frame have focus (Bug#14895). + +2013-07-21 Paul Eggert + + 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 + + * image.c (Fimage_flush): Fix doc typo. + +2013-07-20 Paul Eggert + + 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 + + * 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 + + * lread.c (Fload): Avoid uninitialized warning. + 2013-07-19 Paul Eggert + 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. @@ -123,7 +923,7 @@ 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). + 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, @@ -276,7 +1076,7 @@ (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 + 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, @@ -551,7 +1351,7 @@ initializers. Syntax cleanup, mostly replacing macros with functions. -` This removes the need for the syntax_temp hack. + 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) @@ -649,7 +1449,7 @@ (emacswrite_sig, emacs_perror): New functions. * xrdb.c (fatal): Don't invoke perror, since errno might be garbage. -2013-07-08 Magnus Henoch (tiny change). +2013-07-08 Magnus Henoch (tiny change) * image.c (imagemagick_load_image): Do not use MagickExportImagePixels on NS even if it is present. Pixmap on NS is a void*. @@ -1204,7 +2004,7 @@ * floatfns.c (Flog10): Move to Lisp (marked obsolete there). -2013-06-20 Rüdiger Sonderfeld +2013-06-20 Rüdiger Sonderfeld * floatfns.c (Flog) [HAVE_LOG2]: Use log2 if available and if the base is 2; this is more accurate. @@ -1324,7 +2124,7 @@ 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