}
+#define DVAL_TO_LVAL(d, l) (l) = (d) > LONG_MAX ? (unsigned long) (d) : (long) (d)
#define zendi_convert_to_long(op, holder, result) \
if (op==result) { \
(holder).value.lval = 0; \
break; \
case IS_DOUBLE: \
- (holder).value.lval = (long) (op)->value.dval; \
+ DVAL_TO_LVAL((op)->value.dval, (holder).value.lval); \
break; \
case IS_STRING: \
(holder).value.lval = strtol((op)->value.str.val, NULL, 10); \
case IS_LONG:
break;
case IS_DOUBLE:
- op->value.lval = (long) op->value.dval;
+ DVAL_TO_LVAL(op->value.dval, op->value.lval);
break;
case IS_STRING:
strval = op->value.str.val;