cvs: ZendEngine2(PHP_5_3) / zend_gc.c /tests gc_029.phpt gc_030.phpt php-src NEWS
"Dmitry Stogov" <[email protected]>
| Newsgroups | gmane.comp.php.cvs.zend |
|---|---|
| Message-ID | <cvsdmitry1215504969@cvsserver> |
dmitry Tue Jul 8 08:16:09 2008 UTC
Added files: (Branch: PHP_5_3)
/ZendEngine2/tests gc_030.phpt
Modified files:
/php-src NEWS
/ZendEngine2 zend_gc.c
/ZendEngine2/tests gc_029.phpt
Log:
Fixed bug #45434 (circular reference causes segfault in gc_collect_cycles())
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.965.2.190&r2=1.2027.2.547.2.965.2.191&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.965.2.190 php-src/NEWS:1.2027.2.547.2.965.2.191
--- php-src/NEWS:1.2027.2.547.2.965.2.190 Sun Jul 6 15:17:24 2008
+++ php-src/NEWS Tue Jul 8 08:16:08 2008
@@ -183,6 +183,8 @@
- Fixed an issue in date() where a : was printed for the O modifier after a P
modifier was used. (Derick)
+- Fixed bug #45434 (circular reference causes segfault in gc_collect_cycles()).
+ (Dmitry)
- Fixed bug #44769 (declaring private magic methods should throw error). (Felipe)
- Fixed bug #44913 (Segfault when using return in combination with nested loops
and continue 2). (Dmitry)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_gc.c?r1=1.1.2.14&r2=1.1.2.15&diff_format=u
Index: ZendEngine2/zend_gc.c
diff -u ZendEngine2/zend_gc.c:1.1.2.14 ZendEngine2/zend_gc.c:1.1.2.15
--- ZendEngine2/zend_gc.c:1.1.2.14 Tue Apr 29 13:50:27 2008
+++ ZendEngine2/zend_gc.c Tue Jul 8 08:16:08 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_gc.c,v 1.1.2.14 2008/04/29 13:50:27 tony2001 Exp $ */
+/* $Id: zend_gc.c,v 1.1.2.15 2008/07/08 08:16:08 dmitry Exp $ */
#include "zend.h"
#include "zend_API.h"
@@ -557,9 +557,9 @@
!EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].destructor_called) {
EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].destructor_called = 1;
- zend_try {
- EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].bucket.obj.dtor(EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].bucket.obj.object, Z_OBJ_HANDLE(p->z) TSRMLS_CC);
- } zend_end_try();
+ EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].bucket.obj.refcount++;
+ EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].bucket.obj.dtor(EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].bucket.obj.object, Z_OBJ_HANDLE(p->z) TSRMLS_CC);
+ EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].bucket.obj.refcount--;
}
}
count++;
@@ -575,19 +575,15 @@
EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].valid &&
EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].bucket.obj.refcount <= 0) {
EG(objects_store).object_buckets[Z_OBJ_HANDLE(p->z)].bucket.obj.refcount = 1;
- zend_try {
- Z_TYPE(p->z) = IS_NULL;
- zend_objects_store_del_ref_by_handle(Z_OBJ_HANDLE(p->z) TSRMLS_CC);
- } zend_end_try();
+ Z_TYPE(p->z) = IS_NULL;
+ zend_objects_store_del_ref_by_handle(Z_OBJ_HANDLE(p->z) TSRMLS_CC);
}
} else if (Z_TYPE(p->z) == IS_ARRAY) {
Z_TYPE(p->z) = IS_NULL;
zend_hash_destroy(Z_ARRVAL(p->z));
FREE_HASHTABLE(Z_ARRVAL(p->z));
} else {
- zend_try {
- zval_dtor(&p->z);
- } zend_end_try();
+ zval_dtor(&p->z);
Z_TYPE(p->z) = IS_NULL;
}
p = GC_G(next_to_free);
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_029.phpt?r1=1.1.2.1&r2=1.1.2.2&diff_format=u
Index: ZendEngine2/tests/gc_029.phpt
diff -u ZendEngine2/tests/gc_029.phpt:1.1.2.1 ZendEngine2/tests/gc_029.phpt:1.1.2.2
--- ZendEngine2/tests/gc_029.phpt:1.1.2.1 Fri Mar 14 18:36:34 2008
+++ ZendEngine2/tests/gc_029.phpt Tue Jul 8 08:16:09 2008
@@ -1,5 +1,5 @@
--TEST--
-GC 028: GC and destructors
+GC 029: GC and destructors
--FILE--
<?php
class Foo {
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/gc_030.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/gc_030.phpt
+++ ZendEngine2/tests/gc_030.phpt
--
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php