com php-src: Fixed segfaults: ext/intl/calendar/calendar_meth ods.cpp ext/intl/intl_data.h ext/intl/resourcebundle/ resourcebundle_class.c
| From: | Xinchen Hui | Date: | Sat, 28 Jun 2014 12:52:41 +0000 |
| Subject: | com php-src: Fixed segfaults: ext/intl/calendar/calendar_meth ods.cpp ext/intl/intl_data.h ext/intl/resourcebundle/ resourcebundle_class.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-79108@lists.php.net to get a copy of this message | ||
Commit: b53bc5c7623db88ba3a2f58c397c06e36e9cad5d
Author: Xinchen Hui <laruence@php.net> Sat, 28 Jun 2014 20:52:41 +0800
Parents: e4e9e80067076074e3e6fd9fd2603ec7698c0d33
Branches: phpng
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=b53bc5c7623db88ba3a2f58c397c06e36e9cad5d
Log:
Fixed segfaults
Changed paths:
M ext/intl/calendar/calendar_methods.cpp
M ext/intl/intl_data.h
M ext/intl/resourcebundle/resourcebundle_class.c
Diff:
diff --git a/ext/intl/calendar/calendar_methods.cpp b/ext/intl/calendar/calendar_methods.cpp
index 54fe15a..05051d0 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 4b603c8..5c65b9c 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 0def78e..99e5784 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();
+ }
}
/* }}} */