Commit 2aacbea2 authored by Guido van Rossum's avatar Guido van Rossum

Raise exception instead of dropping imag part for conversion to int,

long, float.

Raise exception instead of dumping core for remainder and divmod.
parent f31bd71f
...@@ -478,29 +478,27 @@ static object * ...@@ -478,29 +478,27 @@ static object *
complex_int(v) complex_int(v)
object *v; object *v;
{ {
double x = ((complexobject *)v)->cval.real; err_setstr(TypeError,
if (x < 0 ? (x = ceil(x)) < (double)LONG_MIN "can't convert complex to int; use e.g. int(abs(z))");
: (x = floor(x)) > (double)LONG_MAX) {
err_setstr(OverflowError, "float too large to convert");
return NULL; return NULL;
}
return newintobject((long)x);
} }
static object * static object *
complex_long(v) complex_long(v)
object *v; object *v;
{ {
double x = ((complexobject *)v)->cval.real; err_setstr(TypeError,
return dnewlongobject(x); "can't convert complex to long; use e.g. long(abs(z))");
return NULL;
} }
static object * static object *
complex_float(v) complex_float(v)
object *v; object *v;
{ {
double x = ((complexobject *)v)->cval.real; err_setstr(TypeError,
return newfloatobject(x); "can't convert complex to float; use e.g. abs(z)");
return NULL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment