From: Guido van Rossum <guido@python.org>
Date: Fri, 24 Aug 2007 03:51:52 +0000 (+0000)
Subject: Patch by Ero Carrera to get rid of PyString in timemodule.c.
X-Git-Tag: v3.0a1~302
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eda12ecc5fc9521ae022d1874e0d58db3a2bd465;p=python

Patch by Ero Carrera to get rid of PyString in timemodule.c.
---

diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 45002a1b18..8ce6667cb6 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -377,13 +377,17 @@ time_strftime(PyObject *self, PyObject *args)
 	PyObject *tup = NULL;
 	struct tm buf;
 	const char *fmt;
+	PyObject *format;
 	size_t fmtlen, buflen;
 	char *outbuf = 0;
 	size_t i;
 
 	memset((void *) &buf, '\0', sizeof(buf));
 
-	if (!PyArg_ParseTuple(args, "s|O:strftime", &fmt, &tup))
+	/* Will always expect a unicode string to be passed as format.
+	   Given that there's no str type anymore in py3k this seems safe.
+	*/
+	if (!PyArg_ParseTuple(args, "U|O:strftime", &format, &tup))
 		return NULL;
 
 	if (tup == NULL) {
@@ -458,6 +462,9 @@ time_strftime(PyObject *self, PyObject *args)
             return NULL;
         }
 
+    /* Convert the unicode string to an ascii one */
+    fmt = PyUnicode_AsString(format);
+
 	fmtlen = strlen(fmt);
 
 	/* I hate these functions that presume you know how big the output
@@ -535,7 +542,7 @@ time_asctime(PyObject *self, PyObject *args)
 	p = asctime(&buf);
 	if (p[24] == '\n')
 		p[24] = '\0';
-	return PyString_FromString(p);
+	return PyUnicode_FromString(p);
 }
 
 PyDoc_STRVAR(asctime_doc,
@@ -571,7 +578,7 @@ time_ctime(PyObject *self, PyObject *args)
 	}
 	if (p[24] == '\n')
 		p[24] = '\0';
-	return PyString_FromString(p);
+	return PyUnicode_FromString(p);
 }
 
 PyDoc_STRVAR(ctime_doc,