Fix probable bug; if errno == EINTR, floatsleep() doesn't break out of
   a Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS block, but it
   calls Py_BLOCK_THREADS anyway. The change moves Py_BLOCK_THREADS
   to inside the if, so it's only executed when the function
   actually returns unexpectedly.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index d5a598b..b01366a 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -755,12 +755,12 @@
 	t.tv_usec = (long)(frac*1000000.0);
 	Py_BEGIN_ALLOW_THREADS
 	if (select(0, (fd_set *)0, (fd_set *)0, (fd_set *)0, &t) != 0) {
-		Py_BLOCK_THREADS
 #ifdef EINTR
 		if (errno != EINTR) {
 #else
 		if (1) {
 #endif
+			Py_BLOCK_THREADS
 			PyErr_SetFromErrno(PyExc_IOError);
 			return -1;
 		}