Hi Dmitry,
I gave up on IM now, it's too slow :)
Coming from the PHP-GTK project, we've noticed two areas where
ZEND_INTERNAL_CLASS is wrongly expected to adhere to zend_object structure.
The more important of the two stems from a change you made in mid-November
in CVS_HEAD and PHP_5_1, forcing a call to zend_objects_destroy_object()
when there is no obj->dtor defined. (zend_objects_API.c, revision 1.47.2.3).
Reaching that function causes a crash in PHP-GTK 2 under some circumstances.
Bug report open on this behaviour at http://bugs.php.net/35871.
The second is that we can't guarantee third party objects will pass
zend_do_perform_implementation_check()... so if display_startup_errors is
on, we get to know about it every time GTK+ objects break PHP's inheritance
rules. Trivial patch attached appears to fix this minor issue without
breaking anything currently in the test suite, but you might know better.
- Steph
Index: ZendEngine2/zend_compile.c
===================================================================
RCS file: /repository/ZendEngine2/zend_compile.c,v
retrieving revision 1.676
diff -u -r1.676 zend_compile.c
--- ZendEngine2/zend_compile.c 17 Dec 2005 15:50:24 -0000 1.676
+++ ZendEngine2/zend_compile.c 3 Jan 2006 22:02:10 -0000
@@ -2009,6 +2009,10 @@
{
zend_uint i;
+ if (fe->common.type == ZEND_INTERNAL_CLASS) {
+ return 1;
+ }
+
/* If it's a user function then arg_info == NULL means we don't have
any parameters but we still need to do the arg number checks. We are only
willing to ignore this for internal functions because extensions don't always
define arg_info. */
if (!proto || (!proto->common.arg_info && proto->common.type !=
ZEND_USER_FUNCTION)) {
return 1;
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php