From bbe24da869a071e5dd203f2ff7e249ec06ac6c95 Mon Sep 17 00:00:00 2001 From: Nikolay Orlyuk Date: Sun, 4 May 2014 19:51:31 +0300 Subject: fix strict-overflow cases #3236 --- src/nvim/undo.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/nvim/undo.c') diff --git a/src/nvim/undo.c b/src/nvim/undo.c index 329af8acdd..36b629b0b5 100644 --- a/src/nvim/undo.c +++ b/src/nvim/undo.c @@ -212,8 +212,11 @@ static void u_check(int newhead_may_be_NULL) { */ int u_save_cursor(void) { - return u_save((linenr_T)(curwin->w_cursor.lnum - 1), - (linenr_T)(curwin->w_cursor.lnum + 1)); + linenr_T cur = curwin->w_cursor.lnum; + linenr_T top = cur > 0 ? cur - 1 : 0; + linenr_T bot = cur + 1; + + return u_save(top, bot); } /* @@ -227,10 +230,9 @@ int u_save(linenr_T top, linenr_T bot) if (undo_off) return OK; - if (top > curbuf->b_ml.ml_line_count - || top >= bot - || bot > curbuf->b_ml.ml_line_count + 1) + if (top >= bot || bot > (curbuf->b_ml.ml_line_count + 1)) { return FAIL; /* rely on caller to do error messages */ + } if (top + 2 == bot) u_saveline((linenr_T)(top + 1)); -- cgit