changeset 6466:b5df99582638 v7.4.562

updated for version 7.4.562 Problem: Segfault with wide screen and error in 'rulerformat'. (Ingo Karkat) Solution: Check there is enough space. (Christian Brabandt)
author Bram Moolenaar <bram@vim.org>
date Wed, 07 Jan 2015 13:31:52 +0100
parents 616912dd90aa
children 4423a99276bd
files src/buffer.c src/screen.c src/version.c
diffstat 3 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -4409,6 +4409,8 @@ get_rel_pos(wp, buf, buflen)
     long	above; /* number of lines above window */
     long	below; /* number of lines below window */
 
+    if (buflen < 3) /* need at least 3 chars for writing */
+	return;
     above = wp->w_topline - 1;
 #ifdef FEAT_DIFF
     above += diff_check_fill(wp, wp->w_topline) - wp->w_topfill;
--- a/src/screen.c
+++ b/src/screen.c
@@ -10588,7 +10588,8 @@ win_redr_ruler(wp, always)
 	    this_ru_col = (WITH_WIDTH(width) + 1) / 2;
 	if (this_ru_col + o < WITH_WIDTH(width))
 	{
-	    while (this_ru_col + o < WITH_WIDTH(width))
+	    /* need at least 3 chars left for get_rel_pos() + NUL */
+	    while (this_ru_col + o < WITH_WIDTH(width) && RULER_BUF_LEN > i + 4)
 	    {
 #ifdef FEAT_MBYTE
 		if (has_mbyte)
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    562,
+/**/
     561,
 /**/
     560,