Skip to content

Commit f3fa570

Browse files
author
alexandre.vassalotti
committed
Fixed complex.__getnewargs__() to not emit another complex object.
git-svn-id: http://svn.python.org/projects/python/trunk@63948 6015fed2-1504-0410-9fe1-9d1591cc4771
1 parent 9845200 commit f3fa570

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

Lib/test/test_complex.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,14 @@ def test_file(self):
373373
except (OSError, IOError):
374374
pass
375375

376+
def test_getnewargs(self):
377+
self.assertEqual((1+2j).__getnewargs__(), (1.0, 2.0))
378+
self.assertEqual((1-2j).__getnewargs__(), (1.0, -2.0))
379+
self.assertEqual((2j).__getnewargs__(), (0.0, 2.0))
380+
self.assertEqual((-0j).__getnewargs__(), (0.0, -0.0))
381+
self.assertEqual(complex(0, INF).__getnewargs__(), (0.0, INF))
382+
self.assertEqual(complex(INF, 0).__getnewargs__(), (INF, 0.0))
383+
376384
if float.__getformat__("double").startswith("IEEE"):
377385
def test_plus_minus_0j(self):
378386
# test that -0j and 0j literals are not identified

Objects/complexobject.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -822,7 +822,8 @@ PyDoc_STRVAR(complex_conjugate_doc,
822822
static PyObject *
823823
complex_getnewargs(PyComplexObject *v)
824824
{
825-
return Py_BuildValue("(D)", &v->cval);
825+
Py_complex c = v->cval;
826+
return Py_BuildValue("(dd)", c.real, c.imag);
826827
}
827828

828829
#if 0

0 commit comments

Comments
 (0)