Index: datetimemodule.c
===================================================================
--- datetimemodule.c	(revision 57420)
+++ datetimemodule.c	(working copy)
@@ -1338,8 +1338,13 @@
 		PyObject *time = PyImport_ImportModule("time");
 		if (time == NULL)
 			goto Done;
-		result = PyObject_CallMethod(time, "strftime", "OO",
-					     PyUnicode_FromString(PyBytes_AS_STRING(newfmt)), timetuple);
+		PyObject *arg = PyUnicode_FromString(PyBytes_AS_STRING(newfmt));
+		if (arg == NULL) {
+			Py_DECREF(time);
+			goto Done;
+		}
+		result = PyObject_CallMethod(time, "strftime", "OO", arg, timetuple);
+		Py_DECREF(arg);
 		Py_DECREF(time);
     	}
  Done:
Index: timemodule.c
===================================================================
--- timemodule.c	(revision 57420)
+++ timemodule.c	(working copy)
@@ -506,7 +506,7 @@
     /* Convert the unicode string to an ascii one */
     fmt = PyUnicode_AsString(format);
 
-	fmtlen = strlen(fmt);
+	fmtlen = PyUnicode_GET_SIZE(format);
 
 	/* I hate these functions that presume you know how big the output
 	 * will be ahead of time...
