Fixed retval with zend_call_method

This commit is contained in:
Xinchen Hui 2014-06-29 19:07:06 +08:00
parent 477f565f80
commit a94ec141fe
2 changed files with 6 additions and 8 deletions

View file

@ -1141,7 +1141,7 @@ U_CFUNC PHP_FUNCTION(intlcal_from_date_time)
zval *zv_arg, zval *zv_arg,
zv_tmp, zv_tmp,
*zv_datetime = NULL, *zv_datetime = NULL,
*zv_timestamp = NULL; zv_timestamp;
php_date_obj *datetime; php_date_obj *datetime;
char *locale_str = NULL; char *locale_str = NULL;
int locale_str_len; int locale_str_len;
@ -1178,11 +1178,12 @@ U_CFUNC PHP_FUNCTION(intlcal_from_date_time)
goto error; goto error;
} }
zend_call_method_with_0_params(zv_datetime, php_date_get_date_ce(), NULL, "gettimestamp", zv_timestamp); zend_call_method_with_0_params(zv_datetime, php_date_get_date_ce(), NULL, "gettimestamp", &zv_timestamp);
if (!zv_timestamp || Z_TYPE_P(zv_timestamp) != IS_LONG) { if (Z_TYPE(zv_timestamp) != IS_LONG) {
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR, intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR,
"intlcal_from_date_time: bad DateTime; call to " "intlcal_from_date_time: bad DateTime; call to "
"DateTime::getTimestamp() failed", 0 TSRMLS_CC); "DateTime::getTimestamp() failed", 0 TSRMLS_CC);
zval_ptr_dtor(&zv_timestamp);
goto error; goto error;
} }
@ -1208,7 +1209,7 @@ U_CFUNC PHP_FUNCTION(intlcal_from_date_time)
"error creating ICU Calendar object", 0 TSRMLS_CC); "error creating ICU Calendar object", 0 TSRMLS_CC);
goto error; goto error;
} }
cal->setTime(((UDate)Z_LVAL_P(zv_timestamp)) * 1000., status); cal->setTime(((UDate)Z_LVAL(zv_timestamp)) * 1000., status);
if (U_FAILURE(status)) { if (U_FAILURE(status)) {
/* time zone was adopted by cal; should not be deleted here */ /* time zone was adopted by cal; should not be deleted here */
delete cal; delete cal;
@ -1223,9 +1224,6 @@ error:
if (zv_datetime && zv_datetime != zv_arg) { if (zv_datetime && zv_datetime != zv_arg) {
zval_ptr_dtor(zv_datetime); zval_ptr_dtor(zv_datetime);
} }
if (zv_timestamp) {
zval_ptr_dtor(zv_timestamp);
}
} }
U_CFUNC PHP_FUNCTION(intlcal_to_date_time) U_CFUNC PHP_FUNCTION(intlcal_to_date_time)

View file

@ -436,7 +436,7 @@ U_CFUNC PHP_FUNCTION(intltz_get_id)
id_us.getBuffer(), id_us.length(), TIMEZONE_ERROR_CODE_P(to)); id_us.getBuffer(), id_us.length(), TIMEZONE_ERROR_CODE_P(to));
INTL_METHOD_CHECK_STATUS(to, "intltz_get_id: Could not convert id to UTF-8"); INTL_METHOD_CHECK_STATUS(to, "intltz_get_id: Could not convert id to UTF-8");
RETURN_STRINGL(id, id_len); RETVAL_STRINGL(id, id_len);
//??? //???
efree(id); efree(id);
} }