[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#28505: 26.0.60; Crash in Fmove_point_visually
From: |
Benjamin Riefenstahl |
Subject: |
bug#28505: 26.0.60; Crash in Fmove_point_visually |
Date: |
Tue, 19 Sep 2017 18:13:05 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.60 (gnu/linux) |
>> From: Benjamin Riefenstahl <b.riefenstahl@turtle-trading.net>
>> Date: Mon, 18 Sep 2017 23:02:12 +0200
>>
>> So I recompiled with -O0 and after reading the code I added a few more
>> "p"s in GDB. I see that "w->current_matrix" has "rows_allocated = 1,
>> nrows = 1", but still "row" was initialized from "rows" and than
>> incremented by "dir" (1). Is that as it should be?
Eli Zaretskii writes:
> Yes, but the incremented value is then checked for validity with this
> snippet:
>
> if (row < MATRIX_FIRST_TEXT_ROW (w->current_matrix)
> || row > MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w))
> goto simulate_display;
MATRIX_BOTTON_TEXT_ROW calculates "rows + nrows" (plus the mode-line,
but this is the minibuffer, so it does not have a mode-line). So
despite the name of the macro the result points *after* the bottom row,
not *at* it. Should that comparison be "row >= BOTTOM"? I'll try that.
The macro seems to be misnamed though if that is the problem.
benny