From: Xinchen Hui Date: Sat, 28 Jun 2014 12:52:41 +0000 (+0800) Subject: Fixed segfaults X-Git-Tag: POST_PHPNG_MERGE~122 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b53bc5c7623db88ba3a2f58c397c06e36e9cad5d;p=php Fixed segfaults --- diff --git a/ext/intl/calendar/calendar_methods.cpp b/ext/intl/calendar/calendar_methods.cpp index 54fe15a8b7..05051d07a4 100644 --- a/ext/intl/calendar/calendar_methods.cpp +++ b/ext/intl/calendar/calendar_methods.cpp @@ -1220,7 +1220,7 @@ U_CFUNC PHP_FUNCTION(intlcal_from_date_time) calendar_object_create(return_value, cal TSRMLS_CC); error: - if (zv_datetime != zv_arg) { + if (zv_datetime && zv_datetime != zv_arg) { zval_ptr_dtor(zv_datetime); } if (zv_timestamp) { diff --git a/ext/intl/intl_data.h b/ext/intl/intl_data.h index 4b603c8d29..5c65b9c6ea 100644 --- a/ext/intl/intl_data.h +++ b/ext/intl/intl_data.h @@ -28,8 +28,8 @@ for this to work! */ typedef struct _intl_data { - zend_object zo; intl_error error; + zend_object zo; } intl_object; #define INTL_METHOD_INIT_VARS(oclass, obj) \ diff --git a/ext/intl/resourcebundle/resourcebundle_class.c b/ext/intl/resourcebundle/resourcebundle_class.c index 0def78ea9e..99e578423b 100644 --- a/ext/intl/resourcebundle/resourcebundle_class.c +++ b/ext/intl/resourcebundle/resourcebundle_class.c @@ -92,8 +92,8 @@ static void resourcebundle_ctor(INTERNAL_FUNCTION_PARAMETERS) { intl_error_set( NULL, U_ILLEGAL_ARGUMENT_ERROR, "resourcebundle_ctor: unable to parse input parameters", 0 TSRMLS_CC ); - zval_dtor( return_value ); - RETURN_NULL(); + Z_OBJ_P(return_value) = NULL; + return; } INTL_CHECK_LOCALE_LEN_OBJ(locale_len, return_value); @@ -152,6 +152,9 @@ PHP_FUNCTION( resourcebundle_create ) { object_init_ex( return_value, ResourceBundle_ce_ptr ); resourcebundle_ctor(INTERNAL_FUNCTION_PARAM_PASSTHRU); + if (Z_TYPE_P(return_value) == IS_OBJECT && Z_OBJ_P(return_value) == NULL) { + RETURN_NULL(); + } } /* }}} */