[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
From: |
Eli Zaretskii |
Date: |
Fri, 29 Jun 2012 16:20:46 +0300 |
Dmitry, could you please explain the reason(s) for the change below?
Vertical positions in a window can never be large enough to justify
using ptrdiff_t (on platforms where that is wider than a 32-bit
'int'). These are pixel positions on the Emacs display, so they
cannot be too large. The type of 'first_vpos' looks especially
strange, since it is explicitly set to 1 at most. I'm not aware of a
platform where an 'int' is not wide enough for a value 1 ;-)
Using inappropriate data types makes the code harder to read and
understand, because it hints that something non-obvious is going on
somewhere.
* xdisp.c (try_window_id): Change type of 'first_vpos' and 'vpos'
to ptrdiff_t.
--- src/xdisp.c 2012-06-28 12:29:37 +0000
+++ src/xdisp.c 2012-06-29 11:48:08 +0000
@@ -17761,8 +17761,8 @@ try_window_id (struct window *w)
{
/* Displayed to end of window, but no line containing text was
displayed. Lines were deleted at the end of the window. */
- int first_vpos = WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0;
- int vpos = XFASTINT (w->window_end_vpos);
+ ptrdiff_t first_vpos = WINDOW_WANTS_HEADER_LINE_P (w) ? 1 : 0;
+ ptrdiff_t vpos = XFASTINT (w->window_end_vpos);
struct glyph_row *current_row = current_matrix->rows + vpos;
struct glyph_row *desired_row = desired_matrix->rows + vpos;
- [no subject],
Eli Zaretskii <=