From: Eli Zaretskii Date: Sat, 4 May 2013 10:19:13 +0000 (+0300) Subject: Fix bug #14062 with assertion violations on MS-Windows. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~2026^2~315 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5bebd1866b19bba82bc8c030ab828a608e301be5;p=emacs.git Fix bug #14062 with assertion violations on MS-Windows. src/dispextern.h (WINDOW_WANTS_HEADER_LINE_P): Verify that w->contents is a buffer before computing everything else. Use parentheses to disambiguate last part of the condition. src/w32fns.c (w32_wnd_proc): Remove temporary code used to trap assertion violations. --- diff --git a/src/ChangeLog b/src/ChangeLog index 4245a1f0256..325babb4d86 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2013-05-04 Eli Zaretskii + + * dispextern.h (WINDOW_WANTS_HEADER_LINE_P): Verify that + w->contents is a buffer before computing everything else. Use + parentheses to disambiguate last part of the condition. + + * w32fns.c (w32_wnd_proc): Remove temporary code used to trap + assertion violations. (Bug#14062) + 2013-05-01 David Reitter * nsfns.m (ns_tooltip): Initialize. diff --git a/src/dispextern.h b/src/dispextern.h index 5ce7b19f173..50a32ffaf8f 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -1423,13 +1423,14 @@ struct glyph_string /* Value is true if window W wants a header line. */ #define WINDOW_WANTS_HEADER_LINE_P(W) \ - (!MINI_WINDOW_P ((W)) \ - && !(W)->pseudo_window_p \ - && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \ - && BUFFERP ((W)->contents) \ - && !NILP (BVAR (XBUFFER ((W)->contents), header_line_format)) \ - && WINDOW_TOTAL_LINES (W) > 1 \ - + !NILP (BVAR (XBUFFER ((W)->contents), mode_line_format))) + (BUFFERP ((W)->contents) \ + ? (!MINI_WINDOW_P ((W)) \ + && !(W)->pseudo_window_p \ + && FRAME_WANTS_MODELINE_P (XFRAME (WINDOW_FRAME ((W)))) \ + && !NILP (BVAR (XBUFFER ((W)->contents), header_line_format)) \ + && WINDOW_TOTAL_LINES (W) > \ + (1 + !NILP (BVAR (XBUFFER ((W)->contents), mode_line_format)))) \ + : 0) /* Return proper value to be used as baseline offset of font that has ASCENT and DESCENT to draw characters by the font at the vertical diff --git a/src/w32fns.c b/src/w32fns.c index 0785e685e6a..66581341478 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -3183,28 +3183,8 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) form.ptCurrentPos.y = w32_system_caret_y; form.rcArea.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, 0); - -#ifdef ENABLE_CHECKING - /* Temporary code to catch crashes in computing form.rcArea.top. */ - eassert (FRAMEP (w->frame)); - eassert (BUFFERP (w->contents)); - { - int wmbp = WINDOW_MENU_BAR_P (w); - int wtbp = WINDOW_TOOL_BAR_P (w); - struct frame *wf = WINDOW_XFRAME (w); - int fibw = FRAME_INTERNAL_BORDER_WIDTH (wf); - int wtel = WINDOW_TOP_EDGE_LINE (w); - int wflh = FRAME_LINE_HEIGHT (wf); - int wwhlp= WINDOW_WANTS_HEADER_LINE_P (w); - int chlh = CURRENT_HEADER_LINE_HEIGHT (w); - int whlh = (wwhlp ? chlh : 0); - - form.rcArea.top = ((wmbp || wtbp) ? 0 : fibw) + wtel * wflh + whlh; - } -#else form.rcArea.top = (WINDOW_TOP_EDGE_Y (w) + WINDOW_HEADER_LINE_HEIGHT (w)); -#endif form.rcArea.right = (WINDOW_BOX_RIGHT_EDGE_X (w) - WINDOW_RIGHT_MARGIN_WIDTH (w) - WINDOW_RIGHT_FRINGE_WIDTH (w));