cvs: ZendEngine2(PHP_5_3) / zend_gc.c
[email protected] ("Dmitry Stogov")
| Newsgroups | php.zend-engine.cvs |
|---|---|
| Message-ID | <cvsdmitry1203500747@cvsserver> |
dmitry Wed Feb 20 09:45:47 2008 UTC
Modified files: (Branch: PHP_5_3)
/ZendEngine2 zend_gc.c
Log:
Added checks for destoied objects
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_gc.c?r1=1.1.2.4&r2=1.1.2.5&diff_format=u
Index: ZendEngine2/zend_gc.c
diff -u ZendEngine2/zend_gc.c:1.1.2.4 ZendEngine2/zend_gc.c:1.1.2.5
--- ZendEngine2/zend_gc.c:1.1.2.4 Tue Feb 19 15:55:57 2008
+++ ZendEngine2/zend_gc.c Wed Feb 20 09:45:47 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_gc.c,v 1.1.2.4 2008/02/19 15:55:57 dmitry Exp $ */
+/* $Id: zend_gc.c,v 1.1.2.5 2008/02/20 09:45:47 dmitry Exp $ */
#include "zend.h"
#include "zend_API.h"
@@ -239,7 +239,8 @@
{
GC_SET_BLACK(obj->buffered);
- if (EXPECTED(Z_OBJ_HANDLER_P(pz, get_properties) != NULL)) {
+ if (EXPECTED(EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(pz)].valid &&
+ Z_OBJ_HANDLER_P(pz, get_properties) != NULL)) {
zend_hash_apply(Z_OBJPROP_P(pz), (apply_func_t) children_scan_black TSRMLS_CC);
}
}
@@ -278,7 +279,8 @@
if (GC_GET_COLOR(obj->buffered) != GC_GREY) {
GC_BENCH_INC(zobj_marked_grey);
GC_SET_COLOR(obj->buffered, GC_GREY);
- if (EXPECTED(Z_OBJ_HANDLER_P(pz, get_properties) != NULL)) {
+ if (EXPECTED(EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(pz)].valid &&
+ Z_OBJ_HANDLER_P(pz, get_properties) != NULL)) {
zend_hash_apply(Z_OBJPROP_P(pz), (apply_func_t) children_mark_grey TSRMLS_CC);
}
}
@@ -353,7 +355,8 @@
zobj_scan_black(obj, pz TSRMLS_CC);
} else {
GC_SET_COLOR(obj->buffered, GC_WHITE);
- if (EXPECTED(Z_OBJ_HANDLER_P(pz, get_properties) != NULL)) {
+ if (EXPECTED(EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(pz)].valid &&
+ Z_OBJ_HANDLER_P(pz, get_properties) != NULL)) {
zend_hash_apply(Z_OBJPROP_P(pz), (apply_func_t) children_scan TSRMLS_CC);
}
}
@@ -417,7 +420,8 @@
if (obj->buffered == (gc_root_buffer*)GC_WHITE) {
GC_SET_BLACK(obj->buffered);
- if (EXPECTED(Z_OBJ_HANDLER_P(pz, get_properties) != NULL)) {
+ if (EXPECTED(EG(objects_store).object_buckets[Z_OBJ_HANDLE_P(pz)].valid &&
+ Z_OBJ_HANDLER_P(pz, get_properties) != NULL)) {
zend_hash_apply(Z_OBJPROP_P(pz), (apply_func_t) children_collect_white TSRMLS_CC);
}
}