]> granicus.if.org Git - php/commitdiff
check if object store was freed before accessing particular object
authorDmitry Stogov <dmitry@zend.com>
Thu, 20 Mar 2014 13:26:20 +0000 (17:26 +0400)
committerDmitry Stogov <dmitry@zend.com>
Thu, 20 Mar 2014 13:26:20 +0000 (17:26 +0400)
Zend/zend_gc.c

index bea503eb63538b16522c491d438b21cecf364d5e..e79e604e54847e4f7116722fd03c3e9af8faae06 100644 (file)
@@ -641,9 +641,9 @@ ZEND_API int gc_collect_cycles(TSRMLS_D)
                        if (p->u.v.type == IS_OBJECT) {
                                zend_object *obj = (zend_object*)p;
 
-                               if (obj->handlers->dtor_obj &&
-                                   EG(objects_store).object_buckets &&
-                                       IS_VALID(EG(objects_store).object_buckets[obj->handle]) &&
+                               if (EG(objects_store).object_buckets &&
+                                   obj->handlers->dtor_obj &&
+                                   IS_VALID(EG(objects_store).object_buckets[obj->handle]) &&
                                        !(obj->gc.u.v.flags & IS_OBJ_DESTRUCTOR_CALLED)) {
 
                                        obj->gc.u.v.flags |= IS_OBJ_DESTRUCTOR_CALLED;