diff --git a/src/misc2.c b/src/misc2.c
index 271014f7a3fec1521c4d7f1f1a281ae3bce8181f..2436f9fb06d454aaf46230d102cc8ca6942b3145 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -161,7 +161,8 @@ coladvance2(
 	if (finetune
 		&& curwin->w_p_wrap
 		&& curwin->w_width != 0
-		&& wcol >= (colnr_T)width)
+		&& wcol >= (colnr_T)width
+		&& width > 0)
 	{
 	    csize = linetabsize(line);
 	    if (csize > 0)
diff --git a/src/testdir/test_number.vim b/src/testdir/test_number.vim
index 13f8de719d893c68bdb6892eec87e84bbfc9d600..78cd6f9012e419f670ed26829ba96f2d76cb213b 100644
--- a/src/testdir/test_number.vim
+++ b/src/testdir/test_number.vim
@@ -320,4 +320,15 @@ func Test_number_rightleft()
   bw!
 endfunc
 
+" This used to cause a divide by zero
+func Test_number_no_text_virtual_edit()
+  vnew
+  call setline(1, ['line one', 'line two'])
+  set number virtualedit=all
+  normal w
+  4wincmd |
+  normal j
+  bwipe!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 97a58e3c0219260a328998e5fc4000b865b17fa8..727257d28d491d66853fdd7a348241259d435fad 100644
--- a/src/version.c
+++ b/src/version.c
@@ -755,6 +755,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    3357,
 /**/
     3356,
 /**/