Issue #5829: complex('1e500') shouldn't raise OverflowError
diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py
index 43282d6..f621186 100644
--- a/Lib/test/test_complex.py
+++ b/Lib/test/test_complex.py
@@ -409,6 +409,13 @@
 
     @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
                          "test requires IEEE 754 doubles")
+    def test_overflow(self):
+        self.assertEqual(complex("1e500"), complex(INF, 0.0))
+        self.assertEqual(complex("-1e500j"), complex(0.0, -INF))
+        self.assertEqual(complex("-1e500+1.8e308j"), complex(-INF, INF))
+
+    @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
+                         "test requires IEEE 754 doubles")
     def test_repr_roundtrip(self):
         vals = [0.0, 1e-500, 1e-315, 1e-200, 0.0123, 3.1415, 1e50, INF, NAN]
         vals += [-v for v in vals]
diff --git a/Misc/NEWS b/Misc/NEWS
index 7ecbd3f..ea5d090 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@
 Core and Builtins
 -----------------
 
+- Issue #5829: complex("1e500") no longer raises OverflowError.  This
+  makes it consistent with float("1e500") and interpretation of real
+  and imaginary literals.
+
 - Issue #3527: Removed Py_WIN_WIDE_FILENAMES which is not used any more.
 
 - Issue #5994: the marshal module now has docstrings.
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index b904cc4..30d8b52 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -799,7 +799,7 @@
 	*/
 
 	/* first look for forms starting with <float> */
-	z = PyOS_string_to_double(s, &end, PyExc_OverflowError);
+	z = PyOS_string_to_double(s, &end, NULL);
 	if (z == -1.0 && PyErr_Occurred()) {
 		if (PyErr_ExceptionMatches(PyExc_ValueError))
 			PyErr_Clear();
@@ -812,7 +812,7 @@
 		if (*s == '+' || *s == '-') {
 			/* <float><signed-float>j | <float><sign>j */
 			x = z;
-			y = PyOS_string_to_double(s, &end, PyExc_OverflowError);
+			y = PyOS_string_to_double(s, &end, NULL);
 			if (y == -1.0 && PyErr_Occurred()) {
 				if (PyErr_ExceptionMatches(PyExc_ValueError))
 					PyErr_Clear();