merge heads
diff --git a/Modules/main.c b/Modules/main.c
index a57d00b..780d877 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -396,6 +396,12 @@
 
         case 'W':
             PySys_AddWarnOption(_PyOS_optarg);
+            /* Extremely obscure hack: if _PyOS_optarg was one character,
+               PyString_FromString in PySys_AddWarnOption will try to intern
+               it. This is bad because hash randomization has not been setup
+               yet, so the string will get the wrong hash. The following call
+               will cause all the cached characters to be released. */
+            PyString_Fini();
             break;
 
         case 'R':