Re: cvs: php4 /ext/com COM.c
| From: | Zeev Suraski | Date: | Tue, 14 Aug 2001 12:21:39 +0000 |
| Subject: | Re: cvs: php4 /ext/com COM.c | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-6836@lists.php.net to get a copy of this message | ||
Can you send me a type library that caused you a crash?
At 06:52 14-08-01, Alan Brown wrote:
-- Zeev Suraski <zeev@zend.com> CTO & co-founder, Zend Technologies Ltd. http://www.zend.com/abrown Mon Aug 13 23:52:32 2001 EDTModified files:/php4/ext/com COM.cLog: Whenever typelibrary constants were loaded, there was a GP Fault at process exit as shutdown_memory_manager seemed to delete constants that were supposed to have been deleted earlier. It seems as though CONST_PERSISTENT is a bad thing to use. Resetting that bit on the constant creation still seems to work and the GP Fault at exit is gone. Index: php4/ext/com/COM.c diff -u php4/ext/com/COM.c:1.43 php4/ext/com/COM.c:1.44--- php4/ext/com/COM.c:1.43 Mon Aug 13 20:48:14 2001+++ php4/ext/com/COM.c Mon Aug 13 23:52:31 2001 @@ -413,7 +413,7 @@ITypeLib *pTL; char *typelib_name; char *modifier, *ptr; - int mode = CONST_PERSISTENT|CONST_CS; + int mode = CONST_CS;if(typelib_name_buffer[0]==';') {@@ -490,7 +490,7 @@comval *obj; char *error_message; char *clsid_str; - int mode = CONST_PERSISTENT; + int mode = 0; /* CONST_PERSISTENT; */ ITypeLib *pTL;@@ -747,7 +747,6 @@return FAILURE; } }-/* return a single element if next() was called without count */ if((arg_count == 0) && (count == 1)) {@@ -1216,7 +1215,7 @@{ case 1: getParameters(ht, 1, &arg_typelib); - mode = CONST_PERSISTENT|CONST_CS; + mode = CONST_CS; /* CONST_PERSISTENT|CONST_CS; */ break; case 2: getParameters(ht, 2, &arg_typelib, &arg_cis);@@ -1758,10 +1757,12 @@j++; continue; } - ids = php_OLECHAR_to_char(bstr_ids, NULL, 1, codepage TSRMLS_CC); + ids = php_OLECHAR_to_char(bstr_ids, NULL, TRUE, codepage TSRMLS_CC); SysFreeString(bstr_ids); c.name_len = strlen(ids)+1; c.name = ids;++ /* Before registering the contsnt, let's see if we can find it */ if (zend_get_constant(c.name, c.name_len-1, &exists TSRMLS_CC)) { /* Oops, it already exists. No problem if it is defined as the same value */@@ -1775,13 +1776,11 @@continue; }- php_variant_to_pval(pVarDesc->lpvarValue, &c.value, FALSE, codepage TSRMLS_CC); + php_variant_to_pval(pVarDesc->lpvarValue, &c.value, mode & CONST_PERSISTENT, codepage TSRMLS_CC); c.flags = mode;- /* Before registering the contsnt, let's see if we can find it */ - { - zend_register_constant(&c TSRMLS_CC); - } + zend_register_constant(&c TSRMLS_CC);+j++; } TypeInfo->lpVtbl->Release(TypeInfo);-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: php-cvs-unsubscribe@lists.php.net For additional commands, e-mail: php-cvs-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net