comparison src/eval.c @ 11313:327a04a762f6 v8.0.0542

patch 8.0.0542: getpos() can return a negative line number commit https://github.com/vim/vim/commit/a1d5fa65bc7e8a548858e9c295a192b63dcd011b Author: Bram Moolenaar <Bram@vim.org> Date: Mon Apr 3 22:02:55 2017 +0200 patch 8.0.0542: getpos() can return a negative line number Problem: getpos() can return a negative line number. (haya14busa) Solution: Handle a zero topline and botline. (closes https://github.com/vim/vim/issues/1613)
author Christian Brabandt <cb@256bit.org>
date Mon, 03 Apr 2017 22:15:05 +0200
parents 13544aa85dc0
children 3e799a37ea22
comparison
equal deleted inserted replaced
11312:661647ecec53 11313:327a04a762f6
6118 { 6118 {
6119 pos.col = 0; 6119 pos.col = 0;
6120 if (name[1] == '0') /* "w0": first visible line */ 6120 if (name[1] == '0') /* "w0": first visible line */
6121 { 6121 {
6122 update_topline(); 6122 update_topline();
6123 pos.lnum = curwin->w_topline; 6123 /* In silent Ex mode topline is zero, but that's not a valid line
6124 * number; use one instead. */
6125 pos.lnum = curwin->w_topline > 0 ? curwin->w_topline : 1;
6124 return &pos; 6126 return &pos;
6125 } 6127 }
6126 else if (name[1] == '$') /* "w$": last visible line */ 6128 else if (name[1] == '$') /* "w$": last visible line */
6127 { 6129 {
6128 validate_botline(); 6130 validate_botline();
6129 pos.lnum = curwin->w_botline - 1; 6131 /* In silent Ex mode botline is zero, return zero then. */
6132 pos.lnum = curwin->w_botline > 0 ? curwin->w_botline - 1 : 0;
6130 return &pos; 6133 return &pos;
6131 } 6134 }
6132 } 6135 }
6133 else if (name[0] == '$') /* last column or line */ 6136 else if (name[0] == '$') /* last column or line */
6134 { 6137 {