cvs: ZendEngine2 / zend_objects_API.c zend_objects_API.h
| From: | Zeev Suraski | 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;