Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend.c zend_globals.h zend_unicode.c
| From: | Andrei Zmievski | Date: | Tue, 03 Oct 2006 15:42:43 +0000 |
| Subject: | Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend.c zend_globals.h zend_unicode.c | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-25916@lists.php.net to get a copy of this message | ||
Strange. I don't see it here on FreeBSD. Does anyone else have this problem?
-A
On Oct 3, 2006, at 4:56 AM, Rob Richards wrote:
I get consistent crashes on windows during shutdown with this change. Access violation in the dtor at: ucol_close(unicode_globals->root_collator); It did open correctly as: unicode_globals->root_collator = ucol_open("en_US", &status); returned -128, which is supposedly successful. I already tried upgrading ICU to 3.4.1 but still same problem. Rob Andrei Zmievski wrote:andrei Fri Sep 29 20:59:26 2006 UTCModified files: /ZendEngine2 zend.c zend_globals.h zend_unicode.c Log:Fix off-by-one error.http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.c?r1=1.372&r2=1.373&diff_format=uIndex: ZendEngine2/zend.c diff -u ZendEngine2/zend.c:1.372 ZendEngine2/zend.c:1.373 --- ZendEngine2/zend.c:1.372 Tue Sep 19 20:44:37 2006 +++ ZendEngine2/zend.c Fri Sep 29 20:59:26 2006 @@ -17,7 +17,7 @@+----------------------------------------------------------------------+*/ -/* $Id: zend.c,v 1.372 2006/09/19 20:44:37 andrei Exp $ */ +/* $Id: zend.c,v 1.373 2006/09/29 20:59:26 andrei Exp $ */ #include "zend.h" #include "zend_extensions.h" @@ -929,11 +929,26 @@ unicode_globals->to_error_mode = ZEND_CONV_ERROR_STOP; unicode_globals->conv_error_handler = NULL; + { + UErrorCode status = U_ZERO_ERROR; + + unicode_globals->root_collator = ucol_open("en_US", &status); + ucol_setStrength(unicode_globals->root_collator, UCOL_PRIMARY); + unicode_globals->root_search = usearch_openFromCollator(EMPTY_STR, 1, EMPTY_STR, 1, + unicode_globals->root_collator, NULL, &status); + } + zend_hash_init_ex(&unicode_globals->flex_compatible, 0, NULL, NULL, 1, 0); } static void unicode_globals_dtor(zend_unicode_globals *unicode_globals TSRMLS_DC) { + if (unicode_globals->root_collator) { + ucol_close(unicode_globals->root_collator); + } + if (unicode_globals->root_search) { + usearch_close(unicode_globals->root_search); + } if (unicode_globals->fallback_encoding_conv) { ucnv_close(unicode_globals->fallback_encoding_conv);