diff --git a/src/mbyte.c b/src/mbyte.c
index 691c160..941411b 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -5645,31 +5645,9 @@
     cw_table = table;
     cw_table_size = l->lv_len;
 
-    // Check that the new value does not conflict with 'fillchars' or
-    // 'listchars'.
-    if (set_chars_option(curwin, &p_fcs, FALSE) != NULL)
-	error = e_conflicts_with_value_of_fillchars;
-    else if (set_chars_option(curwin, &p_lcs, FALSE) != NULL)
-	error = e_conflicts_with_value_of_listchars;
-    else
-    {
-	tabpage_T   *tp;
-	win_T	    *wp;
-
-	FOR_ALL_TAB_WINDOWS(tp, wp)
-	{
-	    if (set_chars_option(wp, &wp->w_p_lcs, FALSE) != NULL)
-	    {
-		error = e_conflicts_with_value_of_listchars;
-		break;
-	    }
-	    if (set_chars_option(wp, &wp->w_p_fcs, FALSE) != NULL)
-	    {
-		error = e_conflicts_with_value_of_fillchars;
-		break;
-	    }
-	}
-    }
+    // Check that the new value does not conflict with 'listchars' or
+    // 'fillchars'.
+    error = check_chars_options();
     if (error != NULL)
     {
 	emsg(_(error));
diff --git a/src/optionstr.c b/src/optionstr.c
index 331207b..7f5a940 100644
--- a/src/optionstr.c
+++ b/src/optionstr.c
@@ -866,24 +866,8 @@
     {
 	if (check_opt_strings(p_ambw, p_ambw_values, FALSE) != OK)
 	    errmsg = e_invalid_argument;
-	else if (set_chars_option(curwin, &p_fcs, FALSE) != NULL)
-	    errmsg = e_conflicts_with_value_of_fillchars;
 	else
-	{
-	    tabpage_T	*tp;
-	    win_T	*wp;
-
-	    FOR_ALL_TAB_WINDOWS(tp, wp)
-	    {
-		if (set_chars_option(wp, &wp->w_p_lcs, FALSE) != NULL)
-		{
-		    errmsg = e_conflicts_with_value_of_listchars;
-		    goto ambw_end;
-		}
-	    }
-	}
-ambw_end:
-	{}
+	    errmsg = check_chars_options();
     }
 
     // 'background'
diff --git a/src/proto/screen.pro b/src/proto/screen.pro
index 66fc0f3..81e5e10 100644
--- a/src/proto/screen.pro
+++ b/src/proto/screen.pro
@@ -56,4 +56,5 @@
 int screen_screencol(void);
 int screen_screenrow(void);
 char *set_chars_option(win_T *wp, char_u **varp, int apply);
+char *check_chars_options(void);
 /* vim: set ft=c : */
diff --git a/src/screen.c b/src/screen.c
index 1f223f9..6929501 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -5155,3 +5155,28 @@
 
     return NULL;	// no error
 }
+
+/*
+ * Check all global and local values of 'listchars' and 'fillchars'.
+ * Return an untranslated error messages if any of them is invalid, NULL
+ * otherwise.
+ */
+    char *
+check_chars_options(void)
+{
+    tabpage_T   *tp;
+    win_T	    *wp;
+
+    if (set_chars_option(curwin, &p_lcs, FALSE) != NULL)
+	return e_conflicts_with_value_of_listchars;
+    if (set_chars_option(curwin, &p_fcs, FALSE) != NULL)
+	return e_conflicts_with_value_of_fillchars;
+    FOR_ALL_TAB_WINDOWS(tp, wp)
+    {
+	if (set_chars_option(wp, &wp->w_p_lcs, FALSE) != NULL)
+	    return e_conflicts_with_value_of_listchars;
+	if (set_chars_option(wp, &wp->w_p_fcs, FALSE) != NULL)
+	    return e_conflicts_with_value_of_fillchars;
+    }
+    return NULL;
+}
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index 01418bd..ba08dd7 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -466,9 +466,17 @@
   call assert_fails('set sessionoptions=curdir,sesdir', 'E474:')
   call assert_fails('set foldmarker={{{,', 'E474:')
   call assert_fails('set sessionoptions=sesdir,curdir', 'E474:')
-  call assert_fails('set listchars=trail:· ambiwidth=double', 'E834:')
+  setlocal listchars=trail:·
+  call assert_fails('set ambiwidth=double', 'E834:')
+  setlocal listchars=trail:-
+  setglobal listchars=trail:·
+  call assert_fails('set ambiwidth=double', 'E834:')
   set listchars&
-  call assert_fails('set fillchars=stl:· ambiwidth=double', 'E835:')
+  setlocal fillchars=stl:·
+  call assert_fails('set ambiwidth=double', 'E835:')
+  setlocal fillchars=stl:-
+  setglobal fillchars=stl:·
+  call assert_fails('set ambiwidth=double', 'E835:')
   set fillchars&
   call assert_fails('set fileencoding=latin1,utf-8', 'E474:')
   set nomodifiable
diff --git a/src/version.c b/src/version.c
index 3944953..0334bf0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -736,6 +736,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    176,
+/**/
     175,
 /**/
     174,
