diff --git a/src/operators.c b/src/operators.c index ab50c2c6c97a456b62a4c950d94de9168c5c8c78..1b69832ea8a4bc69db92eec8c9784ec5dfe5c2bf 100644 --- a/src/operators.c +++ b/src/operators.c @@ -513,6 +513,11 @@ PMOD_EXPORT void o_cast(struct pike_type *type, INT32 run_time_type) stack_pop_keep_top(); + if(TYPEOF(sp[-1]) == T_INT && + SUBTYPEOF(sp[-1]) == NUMBER_UNDEFINED) + Pike_error("Cannot cast this object to %s.\n", + get_name_of_type(type->type)); + } else switch(run_time_type) @@ -724,11 +729,6 @@ PMOD_EXPORT void o_cast(struct pike_type *type, INT32 run_time_type) } } - if(TYPEOF(sp[-1]) == T_INT && - SUBTYPEOF(sp[-1]) == NUMBER_UNDEFINED) - Pike_error("Cannot cast this object to %s.\n", - get_name_of_type(type->type)); - if(run_time_type != TYPEOF(sp[-1])) { switch(TYPEOF(sp[-1])) {