Mercurial > vim
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 { |