andrei Tue Mar 28 04:33:29 2006 UTC Modified files: /php-src/ext/unicode collator.c Log: Fix collator instantiation. http://cvs.php.net/viewcvs.cgi/php-src/ext/unicode/collator.c?r1=1.2&r2=1.3&diff_format=u Index: php-src/ext/unicode/collator.c diff -u php-src/ext/unicode/collator.c:1.2 php-src/ext/unicode/collator.c:1.3 --- php-src/ext/unicode/collator.c:1.2 Tue Mar 28 03:28:08 2006 +++ php-src/ext/unicode/collator.c Tue Mar 28 04:33:29 2006 @@ -14,7 +14,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: collator.c,v 1.2 2006/03/28 03:28:08 andrei Exp $ */ +/* $Id: collator.c,v 1.3 2006/03/28 04:33:29 andrei Exp $ */ #include "php.h" #include "ext/standard/php_array.h" @@ -155,14 +155,18 @@ static zval* collator_instantiate(zend_class_entry *pce, zval *object TSRMLS_DC) { + /* FIXME + * not sure what what this is for but moved here so it doesn't break stuff + * below + */ if (!object) { ALLOC_ZVAL(object); + object->refcount = 1; + object->is_ref = 1; } Z_TYPE_P(object) = IS_OBJECT; object_init_ex(object, pce); - object->refcount = 1; - object->is_ref = 1; return object; } @@ -177,13 +181,17 @@ UErrorCode error; char *collator_name; int collator_name_len; + zval *object; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &collator_name, &collator_name_len) == FAILURE) { RETURN_FALSE; } - collator_instantiate(unicode_ce_collator, return_value TSRMLS_CC); - collatorobj = (php_collator_obj *) zend_object_store_get_object(return_value TSRMLS_CC); + if ((object = getThis()) == NULL) { + object = return_value; + } + collator_instantiate(unicode_ce_collator, object TSRMLS_CC); + collatorobj = (php_collator_obj *) zend_object_store_get_object(object TSRMLS_CC); error = U_ZERO_ERROR; collatorobj->col = ucol_open(collator_name, &error); }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php