I haven't checked all of the conversion macros yet but there's a change
there are more such bugs there.
} \
(op) = &(holder); \
} else if ((op)->type==IS_BOOL || (op)->type==IS_RESOURCE) { \
- (holder) = *(op); \
+ (holder).value.lval = (op)->value.lval; \
(holder).type = IS_LONG; \
(op) = &(holder); \
}
#define zendi_convert_to_long(op, holder, result) \
if (op==result) { \
convert_to_long(op); \
+ } else if ((op)->type==IS_BOOL || (op)->type==IS_RESOURCE) { \
+ (holder).value.lval = (op)->value.lval; \
+ (holder).type = IS_LONG; \
+ (op) = &(holder); \
} else if ((op)->type != IS_LONG) { \
switch ((op)->type) { \
- case IS_RESOURCE: \
- case IS_BOOL: \
- break; \
case IS_DOUBLE: \
(holder).value.lval = (long) (op)->value.dval; \
break; \