com php-src: Merge branch 'master' into integer_semantics: Zend/zend_operators.c Zend/zend_operators.h

From: Date: Tue, 16 Sep 2014 12:45:06 +0000
Subject: com php-src: Merge branch 'master' into integer_semantics: Zend/zend_operators.c Zend/zend_operators.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-81830@lists.php.net to get a copy of this message
Commit: db72160e5ac2b267b9ffa23ad84e62e609382a44 Author: Andrea Faulds <ajf@ajf.me> Tue, 16 Sep 2014 13:45:06 +0100 Parents: be88d0e5d4ab5fdf775f3e38cf054aa0451f0d36 f469dc7429f2257aac6f46228302408608fbd62f Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=db72160e5ac2b267b9ffa23ad84e62e609382a44 Log: Merge branch 'master' into integer_semantics Conflicts: Zend/zend_operators.h Changed paths: MM Zend/zend_operators.c MM Zend/zend_operators.h Diff: diff --cc Zend/zend_operators.h index f168af7,a50e65d..256429d --- a/Zend/zend_operators.h +++ b/Zend/zend_operators.h @@@ -72,18 -72,11 +72,18 @@@ ZEND_API zend_bool instanceof_function( END_EXTERN_C() #if ZEND_DVAL_TO_LVAL_CAST_OK - static zend_always_inline long zend_dval_to_lval(double d) -# define zend_dval_to_lval(d) ((zend_long) (d)) ++static zend_always_inline zend_long zend_dval_to_lval(double d) +{ + if (EXPECTED(zend_finite(d)) && EXPECTED(!zend_isnan(d))) { - return (long)d; ++ return (zend_long)d; + } else { + return 0; + } +} - #elif SIZEOF_LONG == 4 - static zend_always_inline long zend_dval_to_lval(double d) + #elif SIZEOF_ZEND_LONG == 4 + static zend_always_inline zend_long zend_dval_to_lval(double d) { - if (d > LONG_MAX || d < LONG_MIN) { + if (d > ZEND_LONG_MAX || d < ZEND_LONG_MIN) { double two_pow_32 = pow(2., 32.), dmod; @@@ -93,17 -86,15 +93,17 @@@ * to simulate rounding towards 0 of the negative number */ dmod = ceil(dmod) + two_pow_32; } - return (long)(unsigned long)dmod; + return (zend_long)(zend_ulong)dmod; + } else if (UNEXPECTED(!zend_finite(d)) || UNEXPECTED(zend_isnan(d))) { + return 0; } - return (long)d; + return (zend_long)d; } #else - static zend_always_inline long zend_dval_to_lval(double d) + static zend_always_inline zend_long zend_dval_to_lval(double d) { - /* >= as (double)LONG_MAX is outside signed range */ - if (d >= LONG_MAX || d < LONG_MIN) { + /* >= as (double)ZEND_LONG_MAX is outside signed range */ + if (d >= ZEND_LONG_MAX || d < ZEND_LONG_MIN) { double two_pow_64 = pow(2., 64.), dmod; @@@ -113,11 -104,9 +113,11 @@@ * fractional part, hence dmod does not have one either */ dmod += two_pow_64; } - return (long)(unsigned long)dmod; + return (zend_long)(zend_ulong)dmod; + } else if (UNEXPECTED(!zend_finite(d)) || UNEXPECTED(zend_isnan(d))) { + return 0; } - return (long)d; + return (zend_long)d; } #endif /* }}} */

« previous php.cvs (#81830) next »