list->flags = (long) Z_DVAL_PP(tmp);
break;
case IS_STRING:
- cpy = zval_copy(IS_LONG, *tmp);
- list->flags = Z_LVAL_P(cpy);
- zval_free(&cpy);
+ cpy = *tmp;
+ convert_to_long_ex(&cpy);
+ list->flags = Z_LVAL_PP(tmp);
+ if (cpy != *tmp) {
+ zval_ptr_dtor(&cpy);
+ }
break;
default:
break;
list->expires = (long) Z_DVAL_PP(tmp);
break;
case IS_STRING:
- cpy = zval_copy(IS_LONG, *tmp);
+ cpy = *tmp;
+ convert_to_long_ex(&cpy);
if (Z_LVAL_P(cpy)) {
list->expires = Z_LVAL_P(cpy);
} else {
list->expires = expires;
}
}
- zval_free(&cpy);
+ if (cpy != *tmp) {
+ zval_ptr_dtor(&cpy);
+ }
break;
default:
break;