diff src/ex_cmds.c @ 18408:50c0a9fb07ae v8.1.2198

patch 8.1.2198: crash when using :center in autocommand Commit: https://github.com/vim/vim/commit/396b7c78c0fd9cd07528963b18c27398491df40d Author: Bram Moolenaar <Bram@vim.org> Date: Mon Oct 21 23:08:59 2019 +0200 patch 8.1.2198: crash when using :center in autocommand Problem: Crash when using :center in autocommand. Solution: Bail out early for an empty line. (Dominique pelle, closes https://github.com/vim/vim/issues/5095)
author Bram Moolenaar <Bram@vim.org>
date Mon, 21 Oct 2019 23:15:03 +0200
parents ba5d8c5d77d7
children 967ca19425e3
line wrap: on
line diff
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -251,18 +251,23 @@ linelen(int *has_tab)
     int	    save;
     int	    len;
 
-    /* find the first non-blank character */
+    // Get the line.  If it's empty bail out early (could be the empty string
+    // for an unloaded buffer).
     line = ml_get_curline();
+    if (*line == NUL)
+	return 0;
+
+    // find the first non-blank character
     first = skipwhite(line);
 
-    /* find the character after the last non-blank character */
+    // find the character after the last non-blank character
     for (last = first + STRLEN(first);
 				last > first && VIM_ISWHITE(last[-1]); --last)
 	;
     save = *last;
     *last = NUL;
-    len = linetabsize(line);		/* get line length */
-    if (has_tab != NULL)		/* check for embedded TAB */
+    len = linetabsize(line);		// get line length
+    if (has_tab != NULL)		// check for embedded TAB
 	*has_tab = (vim_strchr(first, TAB) != NULL);
     *last = save;