Kaydet (Commit) d4ab3cde authored tarafından 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.
üst 22a85e53
......@@ -478,29 +478,27 @@ static object *
complex_int(v)
object *v;
{
double x = ((complexobject *)v)->cval.real;
if (x < 0 ? (x = ceil(x)) < (double)LONG_MIN
: (x = floor(x)) > (double)LONG_MAX) {
err_setstr(OverflowError, "float too large to convert");
return NULL;
}
return newintobject((long)x);
err_setstr(TypeError,
"can't convert complex to int; use e.g. int(abs(z))");
return NULL;
}
static object *
complex_long(v)
object *v;
{
double x = ((complexobject *)v)->cval.real;
return dnewlongobject(x);
err_setstr(TypeError,
"can't convert complex to long; use e.g. long(abs(z))");
return NULL;
}
static object *
complex_float(v)
object *v;
{
double x = ((complexobject *)v)->cval.real;
return newfloatobject(x);
err_setstr(TypeError,
"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