diff --git a/Lib/DocXMLRPCServer.py b/Lib/DocXMLRPCServer.py
index 86c7bfb..504b669 100644
--- a/Lib/DocXMLRPCServer.py
+++ b/Lib/DocXMLRPCServer.py
@@ -123,8 +123,7 @@
         result = result + '<p>%s</p>\n' % doc
 
         contents = []
-        method_items = list(methods.items())
-        method_items.sort()
+        method_items = sorted(methods.items())
         for key, value in method_items:
             contents.append(self.docroutine(value, key, funcs=fdict))
         result = result + self.bigsection(
diff --git a/Lib/idlelib/FormatParagraph.py b/Lib/idlelib/FormatParagraph.py
index 9b4b3cb..02f96d4 100644
--- a/Lib/idlelib/FormatParagraph.py
+++ b/Lib/idlelib/FormatParagraph.py
@@ -75,6 +75,7 @@
         else:
             text.mark_set("insert", last)
         text.see("insert")
+        return "break"
 
 def find_paragraph(text, mark):
     lineno, col = map(int, mark.split("."))
diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py
index 2ba6dbc..922de7a 100644
--- a/Lib/test/test_float.py
+++ b/Lib/test/test_float.py
@@ -166,7 +166,8 @@
         UnknownFormatTestCase,
         IEEEFormatTestCase,
         FormatTestCase,
-        ReprTestCase)
+        #ReprTestCase
+        )
 
 if __name__ == '__main__':
     test_main()
diff --git a/Misc/ACKS b/Misc/ACKS
index 26bbb0b..17ef503 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -225,6 +225,7 @@
 Gyro Funch
 Peter Funk
 Geoff Furnish
+Ulisses Furquim
 Lele Gaifax
 Santiago Gala
 Yitzchak Gale
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index 5f38b9b..76c8198 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -75,7 +75,8 @@
         PyObject *func;
 } Handlers[NSIG];
 
-static int is_tripped = 0; /* Speed up sigcheck() when none tripped */
+/* Speed up sigcheck() when none tripped */
+static volatile sig_atomic_t is_tripped = 0;
 
 static PyObject *DefaultHandler;
 static PyObject *IgnoreHandler;
@@ -122,8 +123,10 @@
 	/* See NOTES section above */
 	if (getpid() == main_pid) {
 #endif
-		is_tripped++;
 		Handlers[sig_num].tripped = 1;
+                /* Set is_tripped after setting .tripped, as it gets
+                   cleared in PyErr_CheckSignals() before .tripped. */
+		is_tripped = 1;
 		Py_AddPendingCall(checksignals_witharg, NULL);
 #ifdef WITH_THREAD
 	}
@@ -597,13 +600,31 @@
 
 	if (!is_tripped)
 		return 0;
+
 #ifdef WITH_THREAD
 	if (PyThread_get_thread_ident() != main_thread)
 		return 0;
 #endif
+
+	/*
+	 * The is_stripped variable is meant to speed up the calls to
+	 * PyErr_CheckSignals (both directly or via pending calls) when no
+	 * signal has arrived. This variable is set to 1 when a signal arrives
+	 * and it is set to 0 here, when we know some signals arrived. This way
+	 * we can run the registered handlers with no signals blocked.
+	 *
+	 * NOTE: with this approach we can have a situation where is_tripped is
+	 *       1 but we have no more signals to handle (Handlers[i].tripped
+	 *       is 0 for every signal i). This won't do us any harm (except
+	 *       we're gonna spent some cycles for nothing). This happens when
+	 *       we receive a signal i after we zero is_tripped and before we
+	 *       check Handlers[i].tripped.
+	 */
+	is_tripped = 0;
+
 	if (!(f = (PyObject *)PyEval_GetFrame()))
 		f = Py_None;
-	
+
 	for (i = 1; i < NSIG; i++) {
 		if (Handlers[i].tripped) {
 			PyObject *result = NULL;
@@ -621,7 +642,7 @@
 			Py_DECREF(result);
 		}
 	}
-	is_tripped = 0;
+
 	return 0;
 }
 
@@ -632,7 +653,7 @@
 void
 PyErr_SetInterrupt(void)
 {
-	is_tripped++;
+	is_tripped = 1;
 	Handlers[SIGINT].tripped = 1;
 	Py_AddPendingCall((int (*)(void *))PyErr_CheckSignals, NULL);
 }
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index b17f7be..48d29d7 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -281,6 +281,7 @@
 	format_double(buf, buflen, PyFloat_AS_DOUBLE(v), precision);
 }
 
+#ifdef Py_BROKEN_REPR
 /* The following function is based on Tcl_PrintDouble,
  * from tclUtil.c.
  */
@@ -382,6 +383,8 @@
 	format_double_repr(buf, PyFloat_AS_DOUBLE(v));
 }
 
+#endif /* Py_BROKEN_REPR */
+
 /* Macro and helper that convert PyObject obj to a C double and store
    the value in dbl.  If conversion to double raises an exception, obj is
    set to NULL, and the function invoking this macro returns NULL.  If
@@ -434,8 +437,14 @@
 static PyObject *
 float_repr(PyFloatObject *v)
 {
+#ifdef Py_BROKEN_REPR
 	char buf[30];
 	format_float_repr(buf, v);
+#else
+	char buf[100];
+	format_float(buf, sizeof(buf), v, PREC_REPR);
+#endif
+
 	return PyUnicode_FromString(buf);
 }
 
@@ -1327,9 +1336,11 @@
 
 	double_format = detected_double_format;
 	float_format = detected_float_format;
-	
+
+#ifdef Py_BROKEN_REPR	
 	/* Initialize floating point repr */
 	_PyFloat_DigitsInit();
+#endif
 }
 
 void
diff --git a/PCbuild/pythoncore.vcproj b/PCbuild/pythoncore.vcproj
index 326eacc..2ac8e25 100644
--- a/PCbuild/pythoncore.vcproj
+++ b/PCbuild/pythoncore.vcproj
@@ -487,6 +487,9 @@
 		<File
 			RelativePath="..\Objects\dictobject.c">
 		</File>
+		<!--File
+			RelativePath="..\Objects\doubledigits.c">
+		</File-->
 		<File
 			RelativePath="..\Objects\doubledigits.c">
 		</File>
diff --git a/PCbuild8/pythoncore/pythoncore.vcproj b/PCbuild8/pythoncore/pythoncore.vcproj
index 9a848d7..1a78022 100644
--- a/PCbuild8/pythoncore/pythoncore.vcproj
+++ b/PCbuild8/pythoncore/pythoncore.vcproj
@@ -827,6 +827,10 @@
 				RelativePath="..\..\Objects\dictobject.c"
 				>
 			</File>
+			<!--File
+				RelativePath="..\..\Objects\doubledigits.c"
+				>
+			</File-->
 			<File
 				RelativePath="..\..\Objects\doubledigits.c"
 				>
diff --git a/PCbuild9/pythoncore.vcproj b/PCbuild9/pythoncore.vcproj
index 646cb4f..42eaa2e 100644
--- a/PCbuild9/pythoncore.vcproj
+++ b/PCbuild9/pythoncore.vcproj
@@ -1362,6 +1362,10 @@
 				RelativePath="..\Objects\dictobject.c"
 				>
 			</File>
+			<!--File
+				RelativePath="..\Objects\doubledigits.c"
+				>
+			</File-->
 			<File
 				RelativePath="..\Objects\doubledigits.c"
 				>
