]> granicus.if.org Git - php/commitdiff
- Resolve undefined behavior (joe at redhat)
authorAndi Gutmans <andi@php.net>
Sat, 11 Sep 2004 00:23:20 +0000 (00:23 +0000)
committerAndi Gutmans <andi@php.net>
Sat, 11 Sep 2004 00:23:20 +0000 (00:23 +0000)
Zend/zend_operators.c

index 8ef15ba102c2065b1273ed29d31bb717bd8abf9a..446c62bbc337f0916cc3c18a3cdb725cb4e4992e 100644 (file)
@@ -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) {                                                                                               \