logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

cvs: ZendEngine2(PHP_5_0) / zend_execute.c zend_objects_API.c zend_objects_: msg#00085

Subject: cvs: ZendEngine2(PHP_5_0) / zend_execute.c zend_objects_API.c zend_objects_API.h
helly           Sun Jul 25 13:37:56 2004 EDT

  Modified files:              (Branch: PHP_5_0)
    /ZendEngine2        zend_execute.c zend_objects_API.c zend_objects_API.h 
  Log:
  - MFH: Fix bug #29368 : The destructor is called when an exception is 
    thrown from the constructor
  
  
http://cvs.php.net/diff.php/ZendEngine2/zend_execute.c?r1=1.652.2.1&r2=1.652.2.2&ty=u
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.652.2.1 
ZendEngine2/zend_execute.c:1.652.2.2
--- ZendEngine2/zend_execute.c:1.652.2.1        Fri Jul 16 03:26:49 2004
+++ ZendEngine2/zend_execute.c  Sun Jul 25 13:37:55 2004
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_execute.c,v 1.652.2.1 2004/07/16 07:26:49 helly Exp $ */
+/* $Id: zend_execute.c,v 1.652.2.2 2004/07/25 17:37:55 helly Exp $ */
 
 #define ZEND_INTENSIVE_DEBUGGING 0
 
@@ -2777,6 +2777,9 @@
        if (EG(This)) {
                if (EG(exception) && EX(fbc) && 
EX(fbc)->common.fn_flags&ZEND_ACC_CTOR) {
                        EG(This)->refcount--;
+                       if (EG(This)->refcount == 1) {
+                           zend_object_store_ctor_failed(EG(This) TSRMLS_CC);
+                       }
                        zval_ptr_dtor(&EG(This));
                } else if (should_change_scope) {
                        zval_ptr_dtor(&EG(This));
http://cvs.php.net/diff.php/ZendEngine2/zend_objects_API.c?r1=1.41&r2=1.41.2.1&ty=u
Index: ZendEngine2/zend_objects_API.c
diff -u ZendEngine2/zend_objects_API.c:1.41 
ZendEngine2/zend_objects_API.c:1.41.2.1
--- ZendEngine2/zend_objects_API.c:1.41 Sun May 23 16:33:09 2004
+++ ZendEngine2/zend_objects_API.c      Sun Jul 25 13:37:55 2004
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_objects_API.c,v 1.41 2004/05/23 20:33:09 andi Exp $ */
+/* $Id: zend_objects_API.c,v 1.41.2.1 2004/07/25 17:37:55 helly Exp $ */
 
 #include "zend.h"
 #include "zend_globals.h"
@@ -204,6 +204,15 @@
        zend_object_handle handle = Z_OBJ_HANDLE_P(zobject);
 
        EG(objects_store).object_buckets[handle].bucket.obj.object = object;
+}
+
+
+/* Called when the ctor was terminated by an exception */
+ZEND_API void zend_object_store_ctor_failed(zval *zobject TSRMLS_DC)
+{
+       zend_object_handle handle = Z_OBJ_HANDLE_P(zobject);
+
+       EG(objects_store).object_buckets[handle].destructor_called = 1;
 }
 
 
http://cvs.php.net/diff.php/ZendEngine2/zend_objects_API.h?r1=1.14&r2=1.14.2.1&ty=u
Index: ZendEngine2/zend_objects_API.h
diff -u ZendEngine2/zend_objects_API.h:1.14 
ZendEngine2/zend_objects_API.h:1.14.2.1
--- ZendEngine2/zend_objects_API.h:1.14 Tue May 25 10:19:19 2004
+++ ZendEngine2/zend_objects_API.h      Sun Jul 25 13:37:55 2004
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_objects_API.h,v 1.14 2004/05/25 14:19:19 andi Exp $ */
+/* $Id: zend_objects_API.h,v 1.14.2.1 2004/07/25 17:37:55 helly Exp $ */
 
 #ifndef ZEND_OBJECTS_API_H
 #define ZEND_OBJECTS_API_H
@@ -68,6 +68,7 @@
 ZEND_API void *zend_object_store_get_object(zval *object TSRMLS_DC);
 /* See comment in zend_objects_API.c before you use this */
 ZEND_API void zend_object_store_set_object(zval *zobject, void *object 
TSRMLS_DC);
+ZEND_API void zend_object_store_ctor_failed(zval *zobject TSRMLS_DC);
 
 ZEND_API void zend_objects_store_free_object_storage(zend_objects_store 
*objects TSRMLS_DC);
 

-- 
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




<Prev in Thread] Current Thread [Next in Thread>