1
0
mirror of https://github.com/php/php-src.git synced 2026-04-01 05:02:27 +02:00

fix #41517 (different behaviour of floatval() in Unicode mode)

This commit is contained in:
Antony Dovgal
2007-05-28 20:26:52 +00:00
parent ddbd78f523
commit eab558a79e
2 changed files with 9 additions and 2 deletions

View File

@@ -412,7 +412,7 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp
long l;
int type;
if ((type = is_numeric_unicode(Z_USTRVAL_PP(arg), Z_USTRLEN_PP(arg), &l, p, 0)) == 0) {
if ((type = is_numeric_unicode(Z_USTRVAL_PP(arg), Z_USTRLEN_PP(arg), &l, p, -1)) == 0) {
return "double";
} else if (type == IS_LONG) {
*p = (double) l;

View File

@@ -147,7 +147,7 @@ static inline zend_uchar is_numeric_string(char *str, int length, long *lval, do
return 0;
}
static inline zend_uchar is_numeric_unicode(UChar *str, int length, long *lval, double *dval, zend_bool allow_errors)
static inline zend_uchar is_numeric_unicode(UChar *str, int length, long *lval, double *dval, int allow_errors)
{
long local_lval;
double local_dval;
@@ -200,6 +200,13 @@ static inline zend_uchar is_numeric_unicode(UChar *str, int length, long *lval,
}
}
if (!allow_errors) {
return 0;
}
if (allow_errors == -1) {
zend_error(E_NOTICE, "A non well formed numeric value encountered");
}
if (allow_errors) {
if (end_ptr_double > end_ptr_long && dval) {
*dval = local_dval;