cvs: ZendEngine2 / zend_objects_API.c zend_objects_API.h

From: Date: Wed, 04 Feb 2004 12:30:49 +0000
Subject: cvs: ZendEngine2 / zend_objects_API.c zend_objects_API.h
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-2316@lists.php.net to get a copy of this message
zeev Wed Feb 4 07:30:49 2004 EDT Modified files: /ZendEngine2 zend_objects_API.c zend_objects_API.h Log: The valid bit was necessary after all - restored http://cvs.php.net/diff.php/ZendEngine2/zend_objects_API.c?r1=1.27&r2=1.28&ty=u Index: ZendEngine2/zend_objects_API.c diff -u ZendEngine2/zend_objects_API.c:1.27 ZendEngine2/zend_objects_API.c:1.28 --- ZendEngine2/zend_objects_API.c:1.27 Wed Feb 4 07:17:57 2004 +++ ZendEngine2/zend_objects_API.c Wed Feb 4 07:30:48 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_objects_API.c,v 1.27 2004/02/04 12:17:57 zeev Exp $ */ +/* $Id: zend_objects_API.c,v 1.28 2004/02/04 12:30:48 zeev Exp $ */ #include "zend.h" #include "zend_globals.h" @@ -45,11 +45,14 @@ zend_uint i = 1; for (i = 1; i < objects->top ; i++) { - struct _store_object *obj = &objects->object_buckets[i].bucket.obj; - if (obj->dtor && !objects->object_buckets[i].destructor_called) { - objects->object_buckets[i].destructor_called = 1; - if (obj->dtor) { - obj->dtor(obj->object, i TSRMLS_CC); + if (objects->object_buckets[i].valid) { + struct _store_object *obj = &objects->object_buckets[i].bucket.obj; + + if (obj->dtor && !objects->object_buckets[i].destructor_called) { + objects->object_buckets[i].destructor_called = 1; + if (obj->dtor) { + obj->dtor(obj->object, i TSRMLS_CC); + } } } } @@ -61,9 +64,12 @@ zend_uint i = 1; for (i = 1; i < objects->top ; i++) { - struct _store_object *obj = &objects->object_buckets[i].bucket.obj; - if (obj->free_storage) { - obj->free_storage(obj->object TSRMLS_CC); + if (objects->object_buckets[i].valid) { + struct _store_object *obj = &objects->object_buckets[i].bucket.obj; + + if (obj->free_storage) { + obj->free_storage(obj->object TSRMLS_CC); + } } } } @@ -88,11 +94,13 @@ } obj = &EG(objects_store).object_buckets[handle].bucket.obj; EG(objects_store).object_buckets[handle].destructor_called = 0; + EG(objects_store).object_buckets[handle].valid = 1; obj->refcount = 1; obj->object = object; obj->dtor = dtor; obj->free_storage = free_storage; + obj->clone = clone; #if ZEND_DEBUG_OBJECTS @@ -111,9 +119,10 @@ #endif } -#define ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST() \ +#define ZEND_OBJECTS_STORE_ADD_TO_FREE_LIST() \ EG(objects_store).object_buckets[handle].bucket.free_list.next = EG(objects_store).free_list_head; \ - EG(objects_store).free_list_head = handle; \ + EG(objects_store).free_list_head = handle; \ + EG(objects_store).object_buckets[handle].valid = 0; ZEND_API void zend_objects_store_del_ref(zval *zobject TSRMLS_DC) { http://cvs.php.net/diff.php/ZendEngine2/zend_objects_API.h?r1=1.9&r2=1.10&ty=u Index: ZendEngine2/zend_objects_API.h diff -u ZendEngine2/zend_objects_API.h:1.9 ZendEngine2/zend_objects_API.h:1.10 --- ZendEngine2/zend_objects_API.h:1.9 Wed Feb 4 04:56:20 2004 +++ ZendEngine2/zend_objects_API.h Wed Feb 4 07:30:48 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_objects_API.h,v 1.9 2004/02/04 09:56:20 zeev Exp $ */ +/* $Id: zend_objects_API.h,v 1.10 2004/02/04 12:30:48 zeev Exp $ */ #ifndef ZEND_OBJECTS_API_H #define ZEND_OBJECTS_API_H @@ -31,6 +31,7 @@ typedef struct _zend_object_store_bucket { zend_bool destructor_called; + zend_bool valid; union _store_bucket { struct _store_object { void *object;

« previous php.zend-engine.cvs (#2316) next »