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.
This commit is contained in:
parent
d74a158186
commit
5bebd1866b
3 changed files with 17 additions and 27 deletions
|
@ -1,3 +1,12 @@
|
|||
2013-05-04 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* 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 <david.reitter@gmail.com>
|
||||
|
||||
* nsfns.m (ns_tooltip): Initialize.
|
||||
|
|
|
@ -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
|
||||
|
|
20
src/w32fns.c
20
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));
|
||||
|
|
Loading…
Add table
Reference in a new issue