Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_1) / zend.h zend_object_handlers.c zend_objects.c zend_reflection_api.c php-src NEWS
| From: | Marcus Boerger | Date: | Tue, 15 Nov 2005 19:31:15 +0000 |
| Subject: | Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_1) / zend.h zend_object_handlers.c zend_objects.c zend_reflection_api.c php-src NEWS | ||
| References: | 1 | Groups: | php.zend-engine.cvs |
| Request: | Send a blank email to php-zend-engine-cvs+get-4340@lists.php.net to get a copy of this message | ||
Hello Dmitry,
Tuesday, November 15, 2005, 2:35:25 PM, you wrote:
>
> http://cvs.php.net/diff.php/php-src/NEWS?r1=1.2027.2.189&r2=1.2027.2.190&ty=u
> Index: php-src/NEWS
> diff -u php-src/NEWS:1.2027.2.189 php-src/NEWS:1.2027.2.190
> --- php-src/NEWS:1.2027.2.189 Tue Nov 15 08:29:15 2005
> +++ php-src/NEWS Tue Nov 15 08:35:20 2005
> @@ -1,6 +1,7 @@
> PHP NEWS
>
> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
> ?? Nov 2005, PHP 5.1
> +- Allow recursive calls to __get/__set for different properties. (Dmitry)
> - Upgraded PEAR to version 1.4.4. (Greg)
> - Fixed bug in mysqli extension with unsigned int(11) being represented as
> signed integer in PHP instead of string in 32bit systems. (Andrey)
>
> http://cvs.php.net/diff.php/ZendEngine2/zend.h?r1=1.293.2.3&r2=1.293.2.4&ty=u
> Index: ZendEngine2/zend.h
> diff -u ZendEngine2/zend.h:1.293.2.3 ZendEngine2/zend.h:1.293.2.4
> --- ZendEngine2/zend.h:1.293.2.3 Thu Sep 1 06:05:30 2005
> +++ ZendEngine2/zend.h Tue Nov 15 08:35:22 2005
> @@ -17,7 +17,7 @@
> +----------------------------------------------------------------------+
> */
>
> -/* $Id: zend.h,v 1.293.2.3 2005/09/01 10:05:30 dmitry Exp $ */
> +/* $Id: zend.h,v 1.293.2.4 2005/11/15 13:35:22 dmitry Exp $ */
>
> #ifndef ZEND_H
> #define ZEND_H
> @@ -265,13 +265,18 @@
> typedef struct _zval_struct zval;
> typedef struct _zend_class_entry zend_class_entry;
>
> +typedef struct _zend_guard {
> + zend_bool in_get;
> + zend_bool in_set;
> + zend_bool in_unset;
> + zend_bool in_isset;
> + zend_bool dummy; /* sizeof(zend_guard) must not be equal to sizeof(void*) */
> +} zend_guard;
> +
> typedef struct _zend_object {
> zend_class_entry *ce;
> HashTable *properties;
> - unsigned int in_get:1;
> - unsigned int in_set:1;
> - unsigned int in_unset:1;
> - unsigned int in_isset:1;
> + HashTable *guards; /* protects from __get/__set ... recursion */
> } zend_object;
>
[...]
Wouldn't it be better to have the HashTables as members rather than
pointers? It would prevent a malloc/free that is imo not necessaary
at all.
regards
marcus