X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/e9b5f888126dc3fc5eedfd2c647c7aa40a23fb1e..0756b0c3a6e60dd623da6f12bc8d2de05ef7b8f1:/src/ChangeLog diff --git a/src/ChangeLog b/src/ChangeLog index c24e70523f..42dede8e30 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,539 @@ +2011-11-11 Johan Bockgård + + * xdisp.c (fill_composite_glyph_string): Always set s->face, to + avoid a crash (bug#9496). + +2011-11-09 Chong Yidong + + * window.c (Fwindow_inside_edges, Fwindow_inside_pixel_edges) + (Fwindow_inside_absolute_pixel_edges): Only allow live windows. + +2011-11-08 Paul Eggert + + * s/gnu.h (GC_MARK_STACK): Define to GC_MAKE_GCPROS_NOOPS (Bug#9926). + +2011-11-08 Paul Eggert + + Avoid some portability problems by eschewing 'extern inline' functions. + The trivial performance wins aren't worth the portability hassles; see + + et seq. + * dispextern.h (window_box, window_box_height, window_text_bottom_y) + (window_box_width, window_box_left, window_box_left_offset) + (window_box_right, window_box_right_offset): Undo previous change, + by removing the "extern"s. + * intervals.c (adjust_intervals_for_insertion) + (adjust_intervals_for_deletion): Undo previous change, + making these static again. + (offset_intervals, temp_set_point_both, temp_set_point) + (copy_intervals_to_string): No longer inline. + * xdisp.c (window_text_bottom_y, window_box_width) + (window_box_height, window_box_left_offset) + (window_box_right_offset, window_box_left, window_box_right) + (window_box): No longer inline. + +2011-11-08 Chong Yidong + + * window.c (Fwindow_left_column, Fwindow_top_line): Doc fix. + (Fwindow_body_height, Fwindow_body_width): Move from Lisp. Signal + an error if not a live window. + (Fwindow_total_width, Fwindow_total_height): Move from Lisp. + (Fwindow_total_size, Fwindow_body_size): Move to Lisp. + +2011-11-07 Juanma Barranquero + + * lisp.h (syms_of_abbrev): Remove declaration. + Reported by CHENG Gao . + +2011-11-07 Eli Zaretskii + + * w32.c (check_windows_init_file): Don't look for term/w32-win.el + if Vpurify_flag is non-nil. Fixes a crash when running w32 build + of temacs in GUI mode. + +2011-11-07 Martin Rudalics + + * window.h: Declare delete_all_child_windows instead of + delete_all_subwindows. + * window.c (Fwindow_nest, Fset_window_nest) + (Fset_window_new_total, Fset_window_new_normal) + (Fwindow_resize_apply): Don't use term subwindow in doc-strings. + (delete_all_subwindows): Rename to delete_all_child_windows. + (Fdelete_other_windows_internal, Fset_window_configuration): + Call delete_all_child_windows instead of delete_all_subwindows. + * frame.c (delete_frame): Call delete_all_child_windows instead + of delete_all_subwindows. + +2011-11-07 Paul Eggert + + * alloc.c (DEADP): New macro, for porting to GNU/Hurd (Bug#9926). + This is also needed for porting to any host where GC_MARK_STACK is + not GC_MAKE_GCPROS_NOOPS. + (which_symbols): Use it. + +2011-11-07 Kenichi Handa + + * coding.c (coding_set_destination): Check coding->src_pos only + when coding->src_object is a buffer (bug#9910). + + * process.c (send_process): Set the member src_multibyte of coding + to 0 (bug#9911) when sending a unibyte text. + + * callproc.c (Fcall_process): Set the member src_multibyte of + process_coding to 0 (bug#9912). + +2011-11-06 YAMAMOTO Mitsuharu + + * xmenu.c (cleanup_widget_value_tree): New function. + (xmenu_show, xdialog_show): Use it in record_unwind_protect instead of + calling free_menubar_widget_value_tree directly (Bug#9830). + +2011-11-06 Paul Eggert + + Fix some portability problems with 'inline'. + * dispextern.h (window_box, window_box_height, window_text_bottom_y) + (window_box_width, window_box_left, window_box_left_offset) + (window_box_right, window_box_right_offset): Declare extern. + Otherwise, these inline functions do not conform to C99 and + are miscompiled by Microsoft compilers. Reported by Eli Zaretskii in + . + * intervals.c (adjust_intervals_for_insertion) + (adjust_intervals_for_deletion): Now extern, because otherwise the + extern inline functions 'offset_intervals' couldn't refer to it. + (static_offset_intervals): Remove. + (offset_intervals): Rewrite using the old contents of + static_offset_intervals. The old version didn't conform to C99 + because an extern inline function contained a reference to an + identifier with static linkage. + +2011-11-06 Andreas Schwab + + * keyboard.c (interrupt_signal): Don't call kill-emacs while in + GC. + +2011-11-06 Eli Zaretskii + + * xdisp.c (init_iterator, reseat_to_string): Don't set the + iterator's bidi_p flag if Vpurify_flag is non-nil. (Bug#9963) + (Fcurrent_bidi_paragraph_direction): If Vpurify_flag is non-nil, + return Qleft_to_right. + +2011-11-06 Chong Yidong + + * window.c (Fwindow_live_p, Fwindow_frame, Fframe_root_window) + (Fminibuffer_window, Fwindow_buffer, Fwindow_splits) + (Fset_window_splits, Fwindow_nest, Fset_window_nest) + (Fwindow_use_time, Fwindow_total_size, Fwindow_normal_size) + (Fwindow_new_normal, Fwindow_left_column, Fwindow_top_line) + (Fwindow_margins, Fwindow_fringes, Fwindow_scroll_bars) + (Fwindow_vscroll): Doc fix. + (Fwindow_top_child, Fwindow_left_child): Eliminate a nil default + argument, since it makes no sense to pass a live window and for + consistency with window-child. + +2011-11-05 Christoph Scholtes + + * makefile.w32-in ($(TEMACS), (gl-stamp)): Use $(THISDIR) to + support MSVC. + +2011-11-05 Jason Rumney + + * w32font.c (font_matches_spec): Filter out non-Japanese kana fonts. + (add_font_entity_to_list): Filter out non-Japanese Shift-JIS + fonts (Bug#6029). + (add_font_entity_to_list): Fix logic errors in mixed boolean and + bitwise arithmetic preventing use of unicode-sip and non-truetype + opentype fonts. + +2011-11-05 Eli Zaretskii + + * s/ms-w32.h (fstat, stat, utime): Move redirections to + "emacs"-only part. + + * w32fns.c (x_create_tip_frame, Fx_create_frame): Rearrange + initialization code to keep similarity to xfns.c after changes + from 2011-11-05. + +2011-11-05 Jan Djärv + + * nsfns.m: Declare image_cache_refcount if GLYPH_DEBUG. + (unwind_create_frame): New function (Bug#9943). + (Fx_create_frame): Restructure code to be more similar to the one in + xfns.c. Call record_unwind_protect with unwind_create_frame (Bug#9943). + Initialize image_cache_refcount if GLYPH_DEBUG (Bug#9943). + Move terminal->reference_count++ just before making the frame official + (Bug#9943). + + * nsterm.m (x_free_frame_resources): New function. + (x_destroy_window): Move code to x_free_frame_resources. + + * xfns.c (unwind_create_frame): Fix comment. + (Fx_create_frame, x_create_tip_frame): Move + terminal->reference_count++ just before making the frame + official. Move initialization of image_cache_refcount and + dpyinfo_refcount before calling init_frame_faces (Bug#9943). + +2011-11-05 Eli Zaretskii + + Support MSVC build with newer versions of Visual Studio. + * makefile.w32-in (TAGS-gmake): Don't use $(patsubst ...), as + Nmake barfs on that. Use $(OBJ*_c) variables instead, defined on + nt/gmake.defs. + + * lisp.h (ENUM_BF): New macro, for enumerated types in bitfields, + which are not supported by MSVC. + (Lisp_Symbol, Lisp_Misc_Any, Lisp_Marker, Lisp_Misc_Overlay) + (Lisp_Save_Value, Lisp_Free): Use ENUM_BF for enumerated types in + bitfields. + (Lisp_Object) [USE_LISP_UNION_TYPE]: Use ENUM_BF for enumerated + types in bitfields. + (DEFUN) [_MSC_VER]: Define in a different way for MSVC. + + * w32fns.c [_MSC_VER]: DECLARE_HANDLE for any MSVC version. + +2011-11-05 Fabrice Popineau (tiny change) + + Support MSVC build with newer versions of Visual Studio. + * w32.c: Don't include w32api.h for MSVC. + (init_environment) [_MSC_VER]: Call sys_access, not _access. + + * s/ms-w32.h [_MSC_VER]: Typedefs for MSVC. + [_MSC_VER]: Include sys/timeb.h, sys/stat.h, and signal.h. + (fstat, stat, utime) [_MSC_VER]: Redirect to their sys_* cousins. + (malloc, free, realloc, calloc) [_MSC_VER]: Always redirect to the + e_* cousins. + (alloca) [_MSC_VER]: Define to _alloca. + + * lisp.h (DECL_ALIGN) [_MSC_VER]: Define for MSVC. + + * regex.c [_MSC_VER]: A separate definition for MSVC. + +2011-11-04 Eli Zaretskii + + * xdisp.c (note_mouse_highlight): If either of + previous/next-single-property-change returns nil, treat that as + the beginning or the end of the buffer. (Bug#9955) + +2011-11-04 Jan Djärv + + * gtkutil.c (xg_make_tool_item): Add callbacks if one of wimage or + label is not null (Bug#9951). + (xg_tool_item_stale_p): Handle the fact that wimage and/or wlbl + may be NULL. + +2011-11-04 Eli Zaretskii + + * window.c (Fwindow_body_size): Mention in the doc string that the + return value is in frame's canonical units. (Bug#9949) + +2011-11-03 Eli Zaretskii + + * xdisp.c (note_mouse_highlight): Initialize `area'. (Bug#9947) + + * w32fns.c (unwind_create_frame): If needed, free the glyph + matrices of the partially constructed frame. (Bug#9943) + * xfns.c (unwind_create_frame): Likewise. + +2011-11-01 Eli Zaretskii + + * xdisp.c (mouse_face_from_buffer_pos): Fix a typo in a comment. + Don't stop backward scan on the continuation glyph, even though + its CHARPOS is positive. + (mouse_face_from_buffer_pos, note_mouse_highlight): Rename + cover_string to disp_string. + +2011-11-01 Martin Rudalics + + * window.c (temp_output_buffer_show): Don't use + Vtemp_buffer_show_specifiers. + (Vtemp_buffer_show_specifiers): Remove unused variable. + +2011-10-30 Eli Zaretskii + + * xdisp.c (try_cursor_movement): Make sure ROW isn't decremented + past the beginning of the current glyph matrix. + +2011-10-30 Adam Sjøgren (tiny change) + + * xterm.c: Include X11/Xproto.h if HAVE_GTK3. + (x_error_handler): Ignore BadMatch for X_SetInputFocus for + HAVE_GTK3 (Bug#9869). + + * gtkutil.c (xg_win_to_widget, xg_event_is_for_menubar): Initialize + type to GDK_NOTHING so valgrind does not complain (Bug#9901). + + * xterm.h (x_display_info): Add Xatom_net_wm_state_hidden (Bug#9893). + + * xterm.c: Declare x_handle_net_wm_state to return int. + (handle_one_xevent): Check if we are iconified but don't have + _NET_WM_STATE_HIDDEN. If do, treat as deiconify (Bug#9893). + (get_current_wm_state): Return non-zero if not hidden, + check for _NET_WM_STATE_HIDDEN (Bug#9893). + (do_ewmh_fullscreen): Ignore return value from get_current_wm_state. + (x_handle_net_wm_state): Return what get_current_wm_state returns. + (x_term_init): Initialize dpyinfo->Xatom_net_wm_state_hidden. + +2011-10-29 Paul Eggert + + * alloc.c (which_symbols): Declare EXTERNALLY_VISIBLE, + so that this new function doesn't get optimized away by a + whole-program optimizer. Make the 2nd arg EMACS_INT, not int. + +2011-10-29 Andreas Schwab + + * frame.h (MOUSE_HL_INFO): Remove excess parens. + +2011-10-29 Eli Zaretskii + + Fix the `xbytecode' command. + * .gdbinit (xprintbytestr): New command. + (xwhichsymbols): Renamed from `which'; all callers changed. + (xbytecode): Print the byte-code string as well. + +2011-10-29 Kim Storm + + * alloc.c (which_symbols): New function. + +2011-10-29 Andreas Schwab + + * minibuf.c (read_minibuf_noninteractive): Allow reading empty + line. (Bug#9903) + +2011-10-29 Glenn Morris + + * process.c (wait_reading_process_output): Revert 2009-08-30 change. + Not clear what it was for, and it causes various bugs. (Bug#9839) + +2011-10-28 Eli Zaretskii + + * xdisp.c (note_mouse_highlight): Initialize `part', to avoid a + possible random value that matches one of those tested as + condition to clear the mouse face. + +2011-10-28 Chong Yidong + + * xdisp.c (note_mouse_highlight): Fix use of uninitialized var. + +2011-10-28 Dan Nicolaescu + + * window.c (make_window): Initialize phys_cursor_on_p. + +2011-10-28 Stefan Monnier + + * lisp.h (struct Lisp_Symbol): Update comments. + +2011-10-28 Juanma Barranquero + + * w32font.c (w32_load_unicows_or_gdi32): Add missing return. + +2011-10-28 Eli Zaretskii + + Fix Emacs on Windows 9X (bug#8562). Thanks to oslsachem + for helping to debug this. + + * w32font.c (g_b_init_is_w9x, g_b_init_get_outline_metrics_w) + (g_b_init_get_text_metrics_w, g_b_init_get_glyph_outline_w) + (g_b_init_get_glyph_outline_w): New static variables. + (GetOutlineTextMetricsW_Proc, GetTextMetricsW_Proc) + (GetGlyphOutlineW_Proc): New typedefs. + (w32_load_unicows_or_gdi32, get_outline_metrics_w) + (get_text_metrics_w, get_glyph_outline_w, globals_of_w32font): + New functions. + (w32font_open_internal, compute_metrics): + Call get_outline_metrics_w, get_text_metrics_w, and get_glyph_outline_w + instead of calling the "wide" APIs directly. + + * emacs.c (main) [HAVE_NTGUI]: Call globals_of_w32font. + + * w32.h (syms_of_w32font): Add prototype. + +2011-10-27 Juanma Barranquero + + * window.c (Fframe_root_window, Fframe_first_window, Fwindow_end) + (Fframe_selected_window, Ftemp_output_buffer_show, Fnext_window) + (Fdelete_window_internal, Fwindow_parameters): Fix typos in docstrings. + (Fmove_to_window_line): Doc fix. + +2011-10-27 Chong Yidong + + * process.c (make_process): Set gnutls_state to NULL. + + * gnutls.c (emacs_gnutls_deinit): Deinit the gnutls_state if it is + non-NULL, regardless of GNUTLS_INITSTAGE. + (Fgnutls_boot): Cleanups. Call emacs_gnutls_deinit if we signal + an error. Set process slots as soon as we allocate them. + + * gnutls.h (GNUTLS_LOG, GNUTLS_LOG2): Fix macros. + +2011-10-27 Chong Yidong + + * gnutls.c (emacs_gnutls_deinit): New function. + Deallocate credentials structures as well as calling gnutls_deinit. + (Fgnutls_deinit, Fgnutls_boot): Use it. + + * process.c (make_process): Initialize GnuTLS credentials to NULL. + (deactivate_process): Call emacs_gnutls_deinit. + +2011-10-27 Juanma Barranquero + + * image.c (x_create_x_image_and_pixmap): + * w32.c (sys_rename, w32_delayed_load): + * w32font.c (fill_in_logfont): + * w32reg.c (x_get_string_resource): Silence compiler warnings. + +2011-10-26 Juanma Barranquero + + * w32fns.c (w32_default_color_map): New function, + extracted from Fw32_default_color_map. + (Fw32_default_color_map, Fx_open_connection): Use it. (Bug#9785) + +2011-10-25 Paul Eggert + + * dispextern.h (Fcontrolling_tty_p): New decl (Bug#6649 part 2). + +2011-10-25 Stefan Monnier + + * keyboard.c (test_undefined): New function (bug#9751). + (read_key_sequence): Use it to detect when a key is bound to `undefined'. + +2011-10-25 Enami Tsugutomo + + * sysdep.c (init_sys_modes): Fix the check for the controlling + terminal (Bug#6649). + +2011-10-20 Eli Zaretskii + + * dispextern.h (struct bidi_it): New member next_en_type. + + * bidi.c (bidi_line_init): Initialize the next_en_type member. + (bidi_resolve_explicit_1): When next_en_pos is valid for the + current character, check also for next_en_type being WEAK_EN. + (bidi_resolve_weak): Don't enter the expensive loop if the current + position is before next_en_pos. Record the bidi type of the first + non-ET, non-BN character we find, in addition to its position. + (bidi_level_of_next_char): Invalidate next_en_type when + next_en_pos is over-stepped. + +2011-10-20 Paul Eggert + + Time zone name fixes for non-ASCII locales (Bug#641, Bug#9794) + * editfns.c: Rewrite current-time-zone so that it invokes + the equivalent of (format-time-string "%Z") to get the time zone name. + This fixes a bug when the time zone name contains characters that + need converting from the system time locale to Emacs internal format. + This fixes a shortcoming that I introduced in my 1999-10-19 patch: + that patch fixed format-time-string to do the conversion, but + I forgot to fix current-time-zone. + (format_time_string): New function, containing most of + what Fformat_time_string used to contain. + (Fformat_time_string): Rewrite in terms of format_time_string. + This doesn't change this function's behavior. + (current-time-zone): Rewrite to use format_time_string. + This fixes the bug reported by Michael Schierl in + . + Jason Rumney's 2007-06-07 change worked around this bug, but + didn't fix it. + * systime.h (tzname, timezone): Remove no-longer-used declarations. + +2011-10-19 Eli Zaretskii + + * xdisp.c (start_display): If the character at POS is displayed + via a display vector, reset IT->current.dpvec_index to zero. + (try_window_reusing_current_matrix): If a line ends in a display + vector or the next line starts in a display vector, continue + redrawing the window even though the character position of + start_row was reached. + (Bug#9771, part 2) + +2011-10-18 Chong Yidong + + * xdisp.c (get_next_display_element): Handle U+2010 and U+2011 + with nobreak-char-display too. + +2011-10-18 Eli Zaretskii + + Fix part 3 of bug#9771. + * bidi.c (bidi_line_init): Initialize next_en_pos to zero, not -1. + (bidi_resolve_neutral): Don't enter the expensive loop looking for + non-neutral characters if the current character is a paragraph + separator (a.k.a. Newline). This avoids running the same + expensive loop twice, once when we consume the preceding newline + and the other time when the line actually needs to be displayed. + Avoid the loop when we see neutrals on the base embedding level + following a character whose directionality is the same as the + paragraph's. This avoids running the expensive loop when a line + ends in a long sequence of neutrals, like control characters. + Add assertion against STRONG_AL type. Slightly rearrange code + that determines the type of a neutral given the first non-neutral + that follows it. + (bidi_level_of_next_char): Set next_en_pos to zero when + invalidating its info. + +2011-10-17 Eli Zaretskii + + * xdisp.c (push_display_prop): Determine whether to record string + or buffer position by IT->string, not by IT->method. Allow + GET_FROM_DISPLAY_VECTOR as IT->method on entry. (Bug#9771, part 4) + (move_it_vertically_backward): Don't look for character position + immediately after the newline when in a continuation line. + (Bug#9771, part 1) + +2011-10-15 Martin Rudalics + + * window.c (coordinates_in_window): Rewrite and delabelize + vertical border check. (Bug#5357) (Bug#9618) + +2011-10-14 Stefan Monnier + + * xterm.c (frame_highlight, frame_unhighlight): Ignore unexplained + errors in XSetWindowBorder (bug#9310). + +2011-10-13 Dmitry Antipov + + * editfns.c (Fset_time_zone_rule): Replace free with xfree to + avoid crash when xmalloc overrun checking is enabled. + +2011-10-13 Eli Zaretskii + + * xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize + itb.paragraph_dir to NEUTRAL_DIR. Fixes an occasional incorrect + cursor motion with and arrow keys. + + * bidi.c (bidi_init_it): Don't initialize paragraph_dir here, as + some callers set that themselves. + +2011-10-12 Eli Zaretskii + + * xdisp.c (find_row_edges): Handle the case where ROW comes from a + display string and the previous row comes from the same string and + is empty. (Bug#9739) (Bug#9738) + +2011-10-12 Stefan Monnier + + * doc.c (get_doc_string): Encode file name (bug#9735). + +2011-10-12 Eli Zaretskii + + * bidi.c (bidi_level_of_next_char): + * xdisp.c (get_visually_first_element): Remove old incorrect + comments regarding the Unicode Line Separator character. + + * bidi.c (bidi_init_it): Initialize paragraph_dir to NEUTRAL_DIR. + +2011-10-12 Dmitry Antipov + + * alloc.c (Fgc_status): Do not access beyond zombies array + boundary if nzombies > MAX_ZOMBIES. + * alloc.c (dump_zombies): Add missing format specifier. + +2011-10-12 Paul Eggert + + * xdisp.c (set_cursor_from_row): Simplify conditionals, + to pacify GCC 4.6.1 x86-64 with -O2 -Wstrict-overflow. + + * lread.c (read_escape): Allow hex escapes as large as ?\xfffffff. + Some packages use them to denote characters with modifiers. + 2011-10-11 Andreas Schwab * lisp.h (GCPRO1_VAR, GCPRO2_VAR, GCPRO3_VAR, GCPRO4_VAR) @@ -25,8 +561,8 @@ 2011-10-07 Stefan Monnier - * buffer.c (syms_of_buffer) : Don't - advertise functionality which we discourage or doesn't work. + * buffer.c (syms_of_buffer) : + Don't advertise functionality which we discourage or doesn't work. 2011-10-07 Paul Eggert @@ -292,8 +828,7 @@ 2011-09-17 Eli Zaretskii * xdisp.c (reseat_at_next_visible_line_start): Keep information - about the current paragraph and restore it after the call to - reseat. + about the current paragraph and restore it after the call to reseat. * bidi.c (MAX_PARAGRAPH_SEARCH): New macro. (bidi_find_paragraph_start): Search back for paragraph beginning @@ -513,7 +1048,7 @@ * doprnt.c (doprnt): Support printing ptrdiff_t and intmax_t values. (esprintf, exprintf, evxprintf): New functions. * keyboard.c (command_loop_level): Now EMACS_INT, not int. - (cmd_error): kbd macro iterations count is now EMACS_INT, not int. + (cmd_error): Kbd macro iterations count is now EMACS_INT, not int. (modify_event_symbol): Do not assume that the length of name_alist_or_stem is safe to alloca and fits in int. (Fexecute_extended_command): Likewise for function name and binding. @@ -1257,8 +1792,7 @@ 2011-08-18 Andreas Schwab - * process.c (Fnetwork_interface_list): Correctly determine buffer - size. + * process.c (Fnetwork_interface_list): Correctly determine buffer size. 2011-08-17 Chong Yidong @@ -1303,15 +1837,10 @@ 2011-08-15 Eli Zaretskii - * biditype.h: File removed. - - * bidimirror.h: File removed. - - * deps.mk (bidi.o): Remove biditype.h and - bidimirror.h. - - * makefile.w32-in ($(BLD)/bidi.$(O)): Remove biditype.h and - bidimirror.h. + * bidimirror.h: + * biditype.h: Remove file. + * makefile.w32-in ($(BLD)/bidi.$(O)): + * deps.mk (bidi.o): Remove biditype.h and bidimirror.h. * dispextern.h: Fix a typo in the comment to bidi_type_t. @@ -1486,8 +2015,7 @@ 2011-08-04 Andreas Schwab - * regex.c (re_iswctype): Remove some redundant boolean - conversions. + * regex.c (re_iswctype): Remove some redundant boolean conversions. 2011-08-04 Jan Djärv @@ -2024,8 +2552,7 @@ 2011-07-15 Eli Zaretskii * xdisp.c (move_it_in_display_line_to): Fix vertical motion with - bidi redisplay when a line includes both an image and is - truncated. + bidi redisplay when a line includes both an image and is truncated. 2011-07-14 Paul Eggert @@ -2432,6 +2959,9 @@ 2011-07-08 Jason Rumney + * w32term.c (x_make_frame_visible): Use SH_SHOWNORMAL rather than + SH_SHOW for hidden windows (Bug#5482). + * w32fns.c (w32_wnd_proc) [WM_TIMER, WM_SET_CURSOR]: Avoid using frame struct members of non-existent frames (Bug#6284).