Fix compilation warnings under 64-bit Windows
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h
index 75dec86..2520798 100644
--- a/Include/unicodeobject.h
+++ b/Include/unicodeobject.h
@@ -441,7 +441,7 @@
 
    See also PyUnicode_KIND_SIZE(). */
 #define PyUnicode_CHARACTER_SIZE(op) \
-    (1 << (PyUnicode_KIND(op) - 1))
+    ((Py_ssize_t) (1 << (PyUnicode_KIND(op) - 1)))
 
 /* Return pointers to the canonical representation cast to unsigned char,
    Py_UCS2, or Py_UCS4 for direct character access.
@@ -477,7 +477,8 @@
    The index is a character index, the result is a size in bytes.
 
    See also PyUnicode_CHARACTER_SIZE(). */
-#define PyUnicode_KIND_SIZE(kind, index) ((index) << ((kind) - 1))
+#define PyUnicode_KIND_SIZE(kind, index) \
+    ((Py_ssize_t) ((index) << ((kind) - 1)))
 
 /* In the access macros below, "kind" may be evaluated more than once.
    All other macro parameters are evaluated exactly once, so it is safe
diff --git a/Objects/stringlib/unicode_format.h b/Objects/stringlib/unicode_format.h
index 81a1ff2..5f8d24d 100644
--- a/Objects/stringlib/unicode_format.h
+++ b/Objects/stringlib/unicode_format.h
@@ -56,7 +56,7 @@
 
 /* fill in a SubString from a pointer and length */
 Py_LOCAL_INLINE(void)
-SubString_init(SubString *str, PyObject *s, int start, int end)
+SubString_init(SubString *str, PyObject *s, Py_ssize_t start, Py_ssize_t end)
 {
     str->str = s;
     str->start = start;