|
@@ -180,22 +180,22 @@ void data_to_custom_type(const char *string_value, const size_t string_value_len
|
|
|
is_numeric_string(string_value, string_value_length, &_long, &_double, 0);
|
|
|
|
|
|
if (Z_TYPE_P(zv_result_t) == IS_ARRAY) {
|
|
|
- if (_double > 0) {
|
|
|
+ if (_double > 0 && _double <= (double)ZEND_LONG_MAX) {
|
|
|
add_index_double(zv_result_t, zv_hashtable_index, _double);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (_long > 0) {
|
|
|
+ if (_long > 0 && _long <= ZEND_LONG_MAX) {
|
|
|
add_index_long(zv_result_t, zv_hashtable_index, _long);
|
|
|
return;
|
|
|
}
|
|
|
} else {
|
|
|
- if (_double > 0) {
|
|
|
+ if (_double > 0 && _double <= (double)ZEND_LONG_MAX) {
|
|
|
ZVAL_DOUBLE(zv_result_t, _double);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- if (_long > 0) {
|
|
|
+ if (_long > 0 && _long <= ZEND_LONG_MAX) {
|
|
|
ZVAL_LONG(zv_result_t, _long);
|
|
|
return;
|
|
|
}
|