From cd1f45b3be2e630aab32f58770124d38661b518e Mon Sep 17 00:00:00 2001 From: Gustavo Lopes Date: Wed, 22 Aug 2012 22:38:31 +0200 Subject: [PATCH] Fix handling of several uinitialized intl objects PHP 5.4 specific changes. Not having this in the merge commit helps porting to pecl/intl --- ext/intl/spoofchecker/spoofchecker_class.h | 9 +++++++++ ext/intl/spoofchecker/spoofchecker_create.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ext/intl/spoofchecker/spoofchecker_class.h b/ext/intl/spoofchecker/spoofchecker_class.h index 8db64680ef..b9e334fadb 100644 --- a/ext/intl/spoofchecker/spoofchecker_class.h +++ b/ext/intl/spoofchecker/spoofchecker_class.h @@ -55,6 +55,15 @@ extern zend_class_entry *Spoofchecker_ce_ptr; Spoofchecker_object* co = NULL; \ intl_error_reset(NULL TSRMLS_CC); \ +#define SPOOFCHECKER_METHOD_FETCH_OBJECT_NO_CHECK INTL_METHOD_FETCH_OBJECT(Spoofchecker, co) +#define SPOOFCHECKER_METHOD_FETCH_OBJECT \ + SPOOFCHECKERMETHOD_FETCH_OBJECT_NO_CHECK; \ + if (co->uspoof == NULL) { \ + intl_errors_set(&co->err, U_ILLEGAL_ARGUMENT_ERROR, \ + "Found unconstructed Spoofchecker", 0 TSRMLS_CC); \ + RETURN_FALSE; \ + } + #define SPOOFCHECKER_METHOD_FETCH_OBJECT \ co = (Spoofchecker_object *) zend_object_store_get_object(object TSRMLS_CC); \ intl_error_reset(SPOOFCHECKER_ERROR_P(co) TSRMLS_CC); \ diff --git a/ext/intl/spoofchecker/spoofchecker_create.c b/ext/intl/spoofchecker/spoofchecker_create.c index 3659551ede..cf0173f997 100644 --- a/ext/intl/spoofchecker/spoofchecker_create.c +++ b/ext/intl/spoofchecker/spoofchecker_create.c @@ -35,7 +35,7 @@ PHP_METHOD(Spoofchecker, __construct) return; } - SPOOFCHECKER_METHOD_FETCH_OBJECT; + SPOOFCHECKER_METHOD_FETCH_OBJECT_NO_CHECK; co->uspoof = uspoof_open(SPOOFCHECKER_ERROR_CODE_P(co)); INTL_CTOR_CHECK_STATUS(co, "spoofchecker: unable to open ICU Spoof Checker"); -- 2.40.0