Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_3) / zend_closures.c

From: Date: Fri, 08 Aug 2008 06:20:26 +0000
Subject: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2(PHP_5_3) / zend_closures.c
References: 1 2  Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-7005@lists.php.net to get a copy of this message
Hi Marcus, No objections. Please change it if you like, but add test that shows that recovering is really works. Any update on closures/reflection patch? Thanks. Dmitry. Marcus Boerger wrote:
Hello Dmitry, this can actually be an E_RECOVERABLE_ERROR. marcus Thursday, August 7, 2008, 3:35:51 PM, you wrote:
dmitry          Thu Aug  7 13:35:51 2008 UTC
  Modified files:              (Branch: PHP_5_3)
    /ZendEngine2        zend_closures.c   Log:
  Disable closures serialization/unserialization     http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_closures.c?r1=1.3.2.9&r2=1.3.2.10&diff_format=u
Index: ZendEngine2/zend_closures.c diff -u ZendEngine2/zend_closures.c:1.3.2.9 ZendEngine2/zend_closures.c:1.3.2.10
--- ZendEngine2/zend_closures.c:1.3.2.9       Thu Jul 31 07:10:33 2008
+++ ZendEngine2/zend_closures.c       Thu Aug  7 13:35:51 2008
@@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_closures.c,v 1.3.2.9 2008/07/31 07:10:33 dmitry Exp $ */ +/* $Id: zend_closures.c,v 1.3.2.10 2008/08/07 13:35:51 dmitry Exp $ */ #include "zend.h" #include "zend_API.h" @@ -79,6 +79,20 @@ } /* }}} */ +static int zend_closure_serialize(zval *object, unsigned char **buffer, zend_uint *buf_len, zend_serialize_data *data TSRMLS_DC) /* {{{ */ +{
+       zend_error(E_ERROR, "Serialization of 'Closure' is not allowed");
+       return FAILURE;
+} +/* }}} */ + +static int zend_closure_unserialize(zval **object, zend_class_entry *ce, const unsigned char *buf, zend_uint buf_len, zend_unserialize_data *data TSRMLS_DC) /* {{{ */ +{
+       zend_error(E_ERROR, "Unserialization of 'Closure' is not allowed");
+       return FAILURE;
+} +/* }}} */ + static int zend_closure_compare_objects(zval *o1, zval *o2 TSRMLS_DC) /* {{{ */ {
        return (Z_OBJ_HANDLE_P(o1) != Z_OBJ_HANDLE_P(o2));
@@ -196,6 +210,8 @@
        zend_ce_closure = zend_register_internal_class(&ce TSRMLS_CC);
        zend_ce_closure->ce_flags |= ZEND_ACC_FINAL_CLASS;
        zend_ce_closure->create_object = zend_closure_new;
+       zend_ce_closure->serialize = zend_closure_serialize;
+       zend_ce_closure->unserialize = zend_closure_unserialize;
         memcpy(&closure_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
        closure_handlers.get_constructor = zend_closure_get_constructor;
Best regards, Marcus


« previous php.zend-engine.cvs (#7005) next »