_copy_characters() fails more quickly in debug mode on inconsistent state
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 21cafb3..a64f795 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1052,20 +1052,32 @@
             Py_UCS4 ch;
             Py_ssize_t i;
 
+#ifdef Py_DEBUG
             for (i=0; i < how_many; i++) {
                 ch = PyUnicode_READ(from_kind, from_data, from_start + i);
-                if (check_maxchar) {
-                    if (ch > to_maxchar)
-                        return 1;
-                }
-                else {
-                    assert(ch <= to_maxchar);
-                }
+                assert(ch <= to_maxchar);
                 PyUnicode_WRITE(to_kind, to_data, to_start + i, ch);
             }
+#else
+            if (!check_maxchar) {
+                for (i=0; i < how_many; i++) {
+                    ch = PyUnicode_READ(from_kind, from_data, from_start + i);
+                    PyUnicode_WRITE(to_kind, to_data, to_start + i, ch);
+                }
+            }
+            else {
+                for (i=0; i < how_many; i++) {
+                    ch = PyUnicode_READ(from_kind, from_data, from_start + i);
+                    if (ch > to_maxchar)
+                        return 1;
+                    PyUnicode_WRITE(to_kind, to_data, to_start + i, ch);
+                }
+            }
+#endif
         }
         else {
-            return -1;
+            assert(0 && "inconsistent state");
+            return 1;
         }
     }
     return 0;