Three patches by Amaury Forgeot d'Arc; SF patch# 1754484.
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 08c1a00..2f4e513 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -314,14 +314,17 @@
 	return PyUnicode_FromOrdinal(x);
 }
 
-PyDoc_STRVAR(chr_doc,
+PyDoc_VAR(chr_doc) = PyDoc_STR(
 "chr(i) -> Unicode character\n\
 \n\
 Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff."
+)
 #ifndef Py_UNICODE_WIDE
+PyDoc_STR(
 "\nIf 0x10000 <= i, a surrogate pair is returned."
+)
 #endif
-);
+;
 
 
 static PyObject *
@@ -1219,14 +1222,17 @@
 	return NULL;
 }
 
-PyDoc_STRVAR(ord_doc,
+PyDoc_VAR(ord_doc) = PyDoc_STR(
 "ord(c) -> integer\n\
 \n\
 Return the integer ordinal of a one-character string."
+)
 #ifndef Py_UNICODE_WIDE
+PyDoc_STR(
 "\nA valid surrogate pair is also accepted."
+)
 #endif
-);
+;
 
 
 static PyObject *
diff --git a/Python/errors.c b/Python/errors.c
index 2a84c8d..3770522 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -333,9 +333,9 @@
 #endif /* Unix/Windows */
 #endif /* PLAN 9*/
 	if (filenameObject != NULL)
-		v = Py_BuildValue("(isO)", i, s, filenameObject);
+		v = Py_BuildValue("(iUO)", i, s, filenameObject);
 	else
-		v = Py_BuildValue("(is)", i, s);
+		v = Py_BuildValue("(iU)", i, s);
 	if (v != NULL) {
 		PyErr_SetObject(exc, v);
 		Py_DECREF(v);
@@ -413,9 +413,9 @@
 			s[--len] = '\0';
 	}
 	if (filenameObject != NULL)
-		v = Py_BuildValue("(isO)", err, s, filenameObject);
+		v = Py_BuildValue("(iUO)", err, s, filenameObject);
 	else
-		v = Py_BuildValue("(is)", err, s);
+		v = Py_BuildValue("(iU)", err, s);
 	if (v != NULL) {
 		PyErr_SetObject(exc, v);
 		Py_DECREF(v);