Issue #10762: Guard against invalid/non-supported format string '%f' on Windows. Patch Santoso Wijaya.
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
index b68cd6a..65b2735 100644
--- a/Lib/test/test_time.py
+++ b/Lib/test/test_time.py
@@ -2,6 +2,7 @@
import time
import unittest
import locale
+import sys
class TimeTestCase(unittest.TestCase):
@@ -37,6 +38,13 @@
except ValueError:
self.fail('conversion specifier: %r failed.' % format)
+ # Issue #10762: Guard against invalid/non-supported format string
+ # so that Python don't crash (Windows crashes when the format string
+ # input to [w]strftime is not kosher.
+ if sys.platform.startswith('win'):
+ with self.assertRaises(ValueError):
+ time.strftime('%f')
+
def test_strftime_bounds_checking(self):
# Make sure that strftime() checks the bounds of the various parts
#of the time tuple (0 is valid for *all* values).
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index a24728a..faed0e1 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -549,7 +549,7 @@
if (outbuf[1]=='#')
++outbuf; /* not documented by python, */
if (outbuf[1]=='\0' ||
- !wcschr(L"aAbBcdfHIjmMpSUwWxXyYzZ%", outbuf[1]))
+ !wcschr(L"aAbBcdHIjmMpSUwWxXyYzZ%", outbuf[1]))
{
PyErr_SetString(PyExc_ValueError, "Invalid format string");
return 0;