bpo-33954: Fix compiler warning in _PyUnicode_FastFill() (GH-10737)

'data' argument of unicode_fill() is modified, so it must not be
constant.

Add more assertions to unicode_fill(): check the maximum character
value.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index cdfc2f6..2b1db91 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -228,12 +228,14 @@
     assert(kind != PyUnicode_WCHAR_KIND);
     switch (kind) {
     case PyUnicode_1BYTE_KIND: {
+        assert(value <= 0xff);
         Py_UCS1 ch = (unsigned char)value;
         Py_UCS1 *to = (Py_UCS1 *)data + start;
         memset(to, ch, length);
         break;
     }
     case PyUnicode_2BYTE_KIND: {
+        assert(value <= 0xffff);
         Py_UCS2 ch = (Py_UCS2)value;
         Py_UCS2 *to = (Py_UCS2 *)data + start;
         const Py_UCS2 *end = to + length;
@@ -241,6 +243,7 @@
         break;
     }
     case PyUnicode_4BYTE_KIND: {
+        assert(value <= MAX_UNICODE);
         Py_UCS4 ch = value;
         Py_UCS4 * to = (Py_UCS4 *)data + start;
         const Py_UCS4 *end = to + length;
@@ -10117,7 +10120,7 @@
                     Py_UCS4 fill_char)
 {
     const enum PyUnicode_Kind kind = PyUnicode_KIND(unicode);
-    const void *data = PyUnicode_DATA(unicode);
+    void *data = PyUnicode_DATA(unicode);
     assert(PyUnicode_IS_READY(unicode));
     assert(unicode_modifiable(unicode));
     assert(fill_char <= PyUnicode_MAX_CHAR_VALUE(unicode));