Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: [PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/Zend/zend_gc.c trunk/Zend/zend_gc.c

17 views
Skip to first unread message

Derick Rethans

unread,
Sep 5, 2010, 9:32:52 AM9/5/10
to Dmitry Stogov, php...@lists.php.net
Hi!

On Fri, 3 Sep 2010, Dmitry Stogov wrote:

> dmitry Fri, 03 Sep 2010 09:27:47 +0000
>
> Revision: http://svn.php.net/viewvc?view=revision&revision=303016
>
> Log:
> Fixed GC bug

Do you perhaps have a test case or perhaps some information on what went
wrong here?

with kind regards,
Derick

> Changed paths:
> U php/php-src/branches/PHP_5_3/Zend/zend_gc.c
> U php/php-src/trunk/Zend/zend_gc.c
>
> Modified: php/php-src/branches/PHP_5_3/Zend/zend_gc.c
> ===================================================================
> --- php/php-src/branches/PHP_5_3/Zend/zend_gc.c 2010-09-03 06:41:59 UTC (rev 303015)
> +++ php/php-src/branches/PHP_5_3/Zend/zend_gc.c 2010-09-03 09:27:47 UTC (rev 303016)
> @@ -414,19 +414,21 @@
> gc_root_buffer *current = GC_G(roots).next;
>
> while (current != &GC_G(roots)) {
> - if (current->handle && EG(objects_store).object_buckets) {
> - struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
> + if (current->handle) {
> + if (EG(objects_store).object_buckets) {
> + struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
>
> - if (GC_GET_COLOR(obj->buffered) == GC_PURPLE) {
> - zval z;
> + if (GC_GET_COLOR(obj->buffered) == GC_PURPLE) {
> + zval z;
>
> - INIT_PZVAL(&z);
> - Z_OBJ_HANDLE(z) = current->handle;
> - Z_OBJ_HT(z) = current->u.handlers;
> - zobj_mark_grey(obj, &z TSRMLS_CC);
> - } else {
> - GC_SET_ADDRESS(obj->buffered, NULL);
> - GC_REMOVE_FROM_BUFFER(current);
> + INIT_PZVAL(&z);
> + Z_OBJ_HANDLE(z) = current->handle;
> + Z_OBJ_HT(z) = current->u.handlers;
> + zobj_mark_grey(obj, &z TSRMLS_CC);
> + } else {
> + GC_SET_ADDRESS(obj->buffered, NULL);
> + GC_REMOVE_FROM_BUFFER(current);
> + }
> }
> } else {
> if (GC_ZVAL_GET_COLOR(current->u.pz) == GC_PURPLE) {
> @@ -623,15 +625,17 @@
> gc_root_buffer *current = GC_G(roots).next;
>
> while (current != &GC_G(roots)) {
> - if (current->handle && EG(objects_store).object_buckets) {
> - struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
> - zval z;
> + if (current->handle) {
> + if (EG(objects_store).object_buckets) {
> + struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
> + zval z;
>
> - GC_SET_ADDRESS(obj->buffered, NULL);
> - INIT_PZVAL(&z);
> - Z_OBJ_HANDLE(z) = current->handle;
> - Z_OBJ_HT(z) = current->u.handlers;
> - zobj_collect_white(&z TSRMLS_CC);
> + GC_SET_ADDRESS(obj->buffered, NULL);
> + INIT_PZVAL(&z);
> + Z_OBJ_HANDLE(z) = current->handle;
> + Z_OBJ_HT(z) = current->u.handlers;
> + zobj_collect_white(&z TSRMLS_CC);
> + }
> } else {
> GC_ZVAL_SET_ADDRESS(current->u.pz, NULL);
> zval_collect_white(current->u.pz TSRMLS_CC);
>
> Modified: php/php-src/trunk/Zend/zend_gc.c
> ===================================================================
> --- php/php-src/trunk/Zend/zend_gc.c 2010-09-03 06:41:59 UTC (rev 303015)
> +++ php/php-src/trunk/Zend/zend_gc.c 2010-09-03 09:27:47 UTC (rev 303016)
> @@ -414,19 +414,21 @@
> gc_root_buffer *current = GC_G(roots).next;
>
> while (current != &GC_G(roots)) {
> - if (current->handle && EG(objects_store).object_buckets) {
> - struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
> + if (current->handle) {
> + if (EG(objects_store).object_buckets) {
> + struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
>
> - if (GC_GET_COLOR(obj->buffered) == GC_PURPLE) {
> - zval z;
> + if (GC_GET_COLOR(obj->buffered) == GC_PURPLE) {
> + zval z;
>
> - INIT_PZVAL(&z);
> - Z_OBJ_HANDLE(z) = current->handle;
> - Z_OBJ_HT(z) = current->u.handlers;
> - zobj_mark_grey(obj, &z TSRMLS_CC);
> - } else {
> - GC_SET_ADDRESS(obj->buffered, NULL);
> - GC_REMOVE_FROM_BUFFER(current);
> + INIT_PZVAL(&z);
> + Z_OBJ_HANDLE(z) = current->handle;
> + Z_OBJ_HT(z) = current->u.handlers;
> + zobj_mark_grey(obj, &z TSRMLS_CC);
> + } else {
> + GC_SET_ADDRESS(obj->buffered, NULL);
> + GC_REMOVE_FROM_BUFFER(current);
> + }
> }
> } else {
> if (GC_ZVAL_GET_COLOR(current->u.pz) == GC_PURPLE) {
> @@ -623,15 +625,17 @@
> gc_root_buffer *current = GC_G(roots).next;
>
> while (current != &GC_G(roots)) {
> - if (current->handle && EG(objects_store).object_buckets) {
> - struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
> - zval z;
> + if (current->handle) {
> + if (EG(objects_store).object_buckets) {
> + struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj;
> + zval z;
>
> - GC_SET_ADDRESS(obj->buffered, NULL);
> - INIT_PZVAL(&z);
> - Z_OBJ_HANDLE(z) = current->handle;
> - Z_OBJ_HT(z) = current->u.handlers;
> - zobj_collect_white(&z TSRMLS_CC);
> + GC_SET_ADDRESS(obj->buffered, NULL);
> + INIT_PZVAL(&z);
> + Z_OBJ_HANDLE(z) = current->handle;
> + Z_OBJ_HT(z) = current->u.handlers;
> + zobj_collect_white(&z TSRMLS_CC);
> + }
> } else {
> GC_ZVAL_SET_ADDRESS(current->u.pz, NULL);
> zval_collect_white(current->u.pz TSRMLS_CC);
>
>

--
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug

Dmitry Stogov

unread,
Sep 3, 2010, 5:27:47 AM9/3/10
to php...@lists.php.net
dmitry Fri, 03 Sep 2010 09:27:47 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=303016

Log:
Fixed GC bug

Changed paths:

0 new messages