From: Andi Gutmans Date: Sat, 11 Sep 2004 00:23:20 +0000 (+0000) Subject: - Resolve undefined behavior (joe at redhat) X-Git-Tag: PRE_NEW_VM_GEN_PATCH~328 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3e201ac2812081a52b9f5d6b68f744aa3b16dfe1;p=php - Resolve undefined behavior (joe at redhat) --- diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 8ef15ba102..446c62bbc3 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -183,7 +183,15 @@ ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC) } -#define DVAL_TO_LVAL(d, l) (l) = (d) > LONG_MAX ? (unsigned long) (d) : (long) (d) +#define DVAL_TO_LVAL(d, l) do { \ + if ((d) > LONG_MAX) { \ + l = LONG_MAX; \ + } else if ((d) < LONG_MIN) { \ + l = LONG_MIN; \ + } else { \ + l = (d); \ + } \ +} while (0) #define zendi_convert_to_long(op, holder, result) \ if (op==result) { \