diff --git a/src/mbyte.c b/src/mbyte.c
index fa67032..a2d36f1 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -5630,7 +5630,8 @@
     int		    item;
     int		    i;
     listitem_T	    **ptrs;
-    cw_interval_T   *table;
+    cw_interval_T   *table = NULL;
+    size_t	    table_size;
     cw_interval_T   *cw_table_save;
     size_t	    cw_table_size_save;
     char	    *error = NULL;
@@ -5639,15 +5640,12 @@
 	return;
 
     l = argvars[0].vval.v_list;
-    if (l->lv_len == 0)
-    {
+    table_size = (size_t)l->lv_len;
+    if (table_size == 0)
 	// Clearing the table.
-	VIM_CLEAR(cw_table);
-	cw_table_size = 0;
-	goto done;
-    }
+	goto update;
 
-    ptrs = ALLOC_MULT(listitem_T *, l->lv_len);
+    ptrs = ALLOC_MULT(listitem_T *, table_size);
     if (ptrs == NULL)
 	return;
 
@@ -5706,9 +5704,9 @@
     }
 
     // Sort the list on the first number.
-    qsort((void *)ptrs, (size_t)l->lv_len, sizeof(listitem_T *), tv_nr_compare);
+    qsort((void *)ptrs, table_size, sizeof(listitem_T *), tv_nr_compare);
 
-    table = ALLOC_MULT(cw_interval_T, l->lv_len);
+    table = ALLOC_MULT(cw_interval_T, table_size);
     if (table == NULL)
     {
 	vim_free(ptrs);
@@ -5716,7 +5714,7 @@
     }
 
     // Store the items in the new table.
-    for (item = 0; item < l->lv_len; ++item)
+    for (item = 0; (size_t)item < table_size; ++item)
     {
 	listitem_T	*lili = ptrs[item];
 	varnumber_T	n1;
@@ -5738,10 +5736,11 @@
 
     vim_free(ptrs);
 
+update:
     cw_table_save = cw_table;
     cw_table_size_save = cw_table_size;
     cw_table = table;
-    cw_table_size = l->lv_len;
+    cw_table_size = table_size;
 
     // Check that the new value does not conflict with 'listchars' or
     // 'fillchars'.
@@ -5756,7 +5755,6 @@
     }
 
     vim_free(cw_table_save);
-done:
     changed_window_setting_all();
     redraw_all_later(UPD_CLEAR);
 }
diff --git a/src/testdir/test_utf8.vim b/src/testdir/test_utf8.vim
index 0314fcd..991a095 100644
--- a/src/testdir/test_utf8.vim
+++ b/src/testdir/test_utf8.vim
@@ -255,15 +255,21 @@
 
   call assert_fails('call setcellwidths([[0x33, 0x44, 2]])', 'E1114:')
 
-  set listchars=tab:--\\u2192
+  set listchars=tab:--\\u2192 fillchars=stl:\\u2501
   call assert_fails('call setcellwidths([[0x2192, 0x2192, 2]])', 'E834:')
-
-  set fillchars=stl:\\u2501
   call assert_fails('call setcellwidths([[0x2501, 0x2501, 2]])', 'E835:')
 
+  call setcellwidths([[0x201c, 0x201d, 1]])
+  set listchars& fillchars& ambiwidth=double
+
+  set listchars=nbsp:\\u201c fillchars=vert:\\u201d
+  call assert_fails('call setcellwidths([])', 'E834:')
   set listchars&
+  call assert_fails('call setcellwidths([])', 'E835:')
   set fillchars&
+
   call setcellwidths([])
+  set ambiwidth&
   bwipe!
 endfunc
 
diff --git a/src/version.c b/src/version.c
index d7f012c..ddbf4eb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    719,
+/**/
     718,
 /**/
     717,
