patch 8.0.0234: crash when using put in Visual mode

Problem:    When several lines are visually selected and one of them is short,
            using put may cause a crash. (Axel Bender)
Solution:   Check for a short line. (Christian Brabandt)
diff --git a/src/ops.c b/src/ops.c
index 1abb8da..2aee03d 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -3774,16 +3774,25 @@
 	 */
 	if (y_type == MCHAR && y_size == 1)
 	{
-	    linenr_T end = curbuf->b_visual.vi_end.lnum;
+	    linenr_T end;
 
-	    if (curbuf->b_visual.vi_end.lnum < curbuf->b_visual.vi_start.lnum)
-		end = curbuf->b_visual.vi_start.lnum;
+	    if (VIsual_active)
+	    {
+		end = curbuf->b_visual.vi_end.lnum;
+		if (end < curbuf->b_visual.vi_start.lnum)
+		    end = curbuf->b_visual.vi_start.lnum;
+	    }
 
 	    do {
 		totlen = count * yanklen;
 		if (totlen > 0)
 		{
 		    oldp = ml_get(lnum);
+		    if (VIsual_active && col > (int)STRLEN(oldp))
+		    {
+			lnum++;
+			continue;
+		    }
 		    newp = alloc_check((unsigned)(STRLEN(oldp) + totlen + 1));
 		    if (newp == NULL)
 			goto end;	/* alloc() gave an error message */