summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo Lopes <glopes@nebm.ist.utl.pt>2012-08-22 22:38:31 +0200
committerGustavo Lopes <glopes@nebm.ist.utl.pt>2012-08-22 22:38:31 +0200
commitcd1f45b3be2e630aab32f58770124d38661b518e (patch)
treecd0c2d41ce95cfec1cb7314c1bc5b70532e24627
parent87803ace94454a71a04c87f85c938ceffc100bcf (diff)
downloadphp-git-cd1f45b3be2e630aab32f58770124d38661b518e.tar.gz
Fix handling of several uinitialized intl objects
PHP 5.4 specific changes. Not having this in the merge commit helps porting to pecl/intl
-rw-r--r--ext/intl/spoofchecker/spoofchecker_class.h9
-rw-r--r--ext/intl/spoofchecker/spoofchecker_create.c2
2 files changed, 10 insertions, 1 deletions
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");