if (check_null) {
*is_null = 0;
}
- if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
- *dest = Z_LVAL_P(arg);
+ if (EXPECTED(Z_TYPE_P(arg) == IS_INT)) {
++ *dest = Z_IVAL_P(arg);
+ } else if (EXPECTED(Z_TYPE_P(arg) == IS_DOUBLE)) {
- if (strict && UNEXPECTED(Z_DVAL_P(arg) > LONG_MAX)) {
- *dest = LONG_MAX;
- } else if (strict && UNEXPECTED(Z_DVAL_P(arg) < LONG_MIN)) {
- *dest = LONG_MIN;
+ if (strict && UNEXPECTED(Z_DVAL_P(arg) > ZEND_INT_MAX)) {
- *dest = ZEND_INT_MAX;
++ *dest = ZEND_INT__MAX;
+ } else if (strict && UNEXPECTED(Z_DVAL_P(arg) < ZEND_INT_MIN)) {
+ *dest = ZEND_INT_MIN;
} else {
- *dest = zend_dval_to_lval(Z_DVAL_P(arg));
- *dest = Z_IVAL_P(arg);
++ *dest = zend_dval_to_ival(Z_DVAL_P(arg));
}
- } else if (EXPECTED(Z_TYPE_P(arg) == IS_DOUBLE)) {
- *dest = zend_dval_to_ival(Z_DVAL_P(arg));
} else if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
double d;
int type;