From e826ef0a89808da65b24f820feb62b3c49fd369f Mon Sep 17 00:00:00 2001
From: Guido van Rossum <guido@python.org>
Date: Fri, 10 Mar 2000 23:02:17 +0000
Subject: [PATCH] Marc-Andre Lemburg: support for Unicode strings; 'U' expects
 a Unicode object.

---
 Python/getargs.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/Python/getargs.c b/Python/getargs.c
index 2d9e2b712b..4617d0515e 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -585,7 +585,13 @@ convertsimple1(arg, p_format, p_va)
 			        char **p = va_arg(*p_va, char **);
 			
 			        if (PyString_Check(arg))
-				  *p = PyString_AsString(arg);
+				    *p = PyString_AS_STRING(arg);
+				else if (PyUnicode_Check(arg)) {
+				    arg = PyUnicode_AsUTF8String(arg);
+				    if (arg == NULL)
+					return "unicode conversion error";
+				    *p = PyString_AS_STRING(arg);
+				}
 				else
 				  return "string";
 				if ((int)strlen(*p) != PyString_Size(arg))
@@ -625,6 +631,12 @@ convertsimple1(arg, p_format, p_va)
 				  *p = 0;
 				else if (PyString_Check(arg))
 				  *p = PyString_AsString(arg);
+				else if (PyUnicode_Check(arg)) {
+				  arg = PyUnicode_AsUTF8String(arg);
+				  if (arg == NULL)
+				      return "unicode conversion error";
+				  *p = PyString_AS_STRING(arg);
+				}
 				else
 				  return "None or string";
 				if (*format == '#') {
@@ -652,6 +664,16 @@ convertsimple1(arg, p_format, p_va)
 			break;
 		}
 	
+	case 'U': /* Unicode object */
+		{
+			PyObject **p = va_arg(*p_va, PyObject **);
+			if (PyUnicode_Check(arg))
+				*p = arg;
+			else
+				return "unicode";
+			break;
+		}
+	
 	case 'O': /* object */
 		{
 			PyTypeObject *type;
-- 
2.49.0