diff --git a/Misc/NEWS b/Misc/NEWS
index b1be889..fef71cf 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -73,6 +73,13 @@
   always returning an integer. So it is now possible to distinguish special
   keys like keypad keys.
 
+- Issue #14223: Fix window.addch() of the curses module for special characters
+  like curses.ACS_HLINE: the Python function addch(int) and addch(bytes) is now
+  calling the C function waddch()/mvwaddch() (as it was done in Python 3.2),
+  instead of wadd_wch()/mvwadd_wch(). The Python function addch(str) is still
+  calling the C function wadd_wch()/mvwadd_wch() if the Python curses is linked
+  to libncursesw.
+
 
 What's New in Python 3.3.0 Release Candidate 1?
 ===============================================
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 0436e7f..3f9ca13 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -280,7 +280,6 @@
 #endif
                           )
 {
-    int ret = 0;
     long value;
 #ifdef HAVE_NCURSESW
     wchar_t buffer[2];
@@ -304,7 +303,6 @@
     }
     else if(PyBytes_Check(obj) && PyBytes_Size(obj) == 1) {
         value = (unsigned char)PyBytes_AsString(obj)[0];
-        ret = 1;
     }
     else if (PyLong_CheckExact(obj)) {
         int overflow;
@@ -314,11 +312,6 @@
                             "int doesn't fit in long");
             return 0;
         }
-#ifdef HAVE_NCURSESW
-        ret = 2;
-#else
-        ret = 1;
-#endif
     }
     else {
         PyErr_Format(PyExc_TypeError,
@@ -326,27 +319,14 @@
                      Py_TYPE(obj)->tp_name);
         return 0;
     }
-#ifdef HAVE_NCURSESW
-    if (ret == 2) {
-        memset(wch->chars, 0, sizeof(wch->chars));
-        wch->chars[0] = (wchar_t)value;
-        if ((long)wch->chars[0] != value) {
-            PyErr_Format(PyExc_OverflowError,
-                         "character doesn't fit in wchar_t");
-            return 0;
-        }
+
+    *ch = (chtype)value;
+    if ((long)*ch != value) {
+        PyErr_Format(PyExc_OverflowError,
+                     "byte doesn't fit in chtype");
+        return 0;
     }
-    else
-#endif
-    {
-        *ch = (chtype)value;
-        if ((long)*ch != value) {
-            PyErr_Format(PyExc_OverflowError,
-                         "byte doesn't fit in chtype");
-            return 0;
-        }
-    }
-    return ret;
+    return 1;
 }
 
 /* Convert an object to a byte string (char*) or a wide character string
