]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.6' into PHP-7.0
authorNikita Popov <nikic@php.net>
Sun, 20 Mar 2016 16:48:06 +0000 (17:48 +0100)
committerNikita Popov <nikic@php.net>
Sun, 20 Mar 2016 16:48:06 +0000 (17:48 +0100)
Conflicts:
ext/spl/spl_observer.c

1  2 
NEWS
ext/spl/spl_observer.c

diff --cc NEWS
index 0cccc6abe7b3141c2a26fc891383f7b751894232,cf7edaf931cd9a12c81b5c52171c9f1f7a9fbd0f..f7d1c7d93d794f7537bf3f3666cc464018710a2c
--- 1/NEWS
--- 2/NEWS
+++ b/NEWS
@@@ -24,15 -17,13 +24,17 @@@ PH
      call constructor). (Anatol)
  
  - SPL:
 +  . Fixed bug #71838 (Deserializing serialized SPLObjectStorage-Object can't
 +    access properties in PHP). (Nikita)
 +  . Fixed bug #52339 (SPL autoloader breaks class_exists()). (Nikita)
+   . Fixed bug #67582 (Cloned SplObjectStorage with overwritten getHash fails
+     offsetExists()). (Nikita)
  
  - Standard:
 +  . Fixed bug #71837 (Wrong arrays behaviour). (Laruence)
    . Fixed bug #71840 (Unserialize accepts wrongly data). (Ryat, Laruence)
  
 -31 Marc 2016, PHP 5.6.20
 +31 Mar 2016 PHP 7.0.5
  
  - CLI Server:
    . Fixed bug #69953 (Support MKCALENDAR request method). (Christoph)
index 76b98a51d0fafae357e5f5a3a031aad3c43a4d49,fb0b29fccd5b48d0f5f47db7f38948e6b411fd09..c1892058796455e95f6a53c2305661689a52b7ac
@@@ -214,27 -256,25 +214,22 @@@ void spl_object_storage_addall(spl_SplO
        intern->index = 0;
  } /* }}} */
  
 -static zend_object_value spl_object_storage_new_ex(zend_class_entry *class_type, spl_SplObjectStorage **obj, zval *orig TSRMLS_DC) /* {{{ */
 +static zend_object *spl_object_storage_new_ex(zend_class_entry *class_type, zval *orig) /* {{{ */
  {
 -      zend_object_value     retval;
        spl_SplObjectStorage *intern;
 -      zend_class_entry     *parent = class_type;
 +      zend_class_entry *parent = class_type;
  
 -      intern = emalloc(sizeof(spl_SplObjectStorage));
 -      memset(intern, 0, sizeof(spl_SplObjectStorage));
 -      *obj = intern;
 +      intern = emalloc(sizeof(spl_SplObjectStorage) + zend_object_properties_size(parent));
 +      memset(intern, 0, sizeof(spl_SplObjectStorage) - sizeof(zval));
 +      intern->pos = HT_INVALID_IDX;
  
 -      zend_object_std_init(&intern->std, class_type TSRMLS_CC);
 +      zend_object_std_init(&intern->std, class_type);
        object_properties_init(&intern->std, class_type);
  
 -      zend_hash_init(&intern->storage, 0, NULL, (void (*)(void *))spl_object_storage_dtor, 0);
 +      zend_hash_init(&intern->storage, 0, NULL, spl_object_storage_dtor, 0);
  
 -      retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t) spl_SplOjectStorage_free_storage, NULL TSRMLS_CC);
 -      retval.handlers = &spl_handler_SplObjectStorage;
 +      intern->std.handlers = &spl_handler_SplObjectStorage;
  
-       if (orig) {
-               spl_SplObjectStorage *other = Z_SPLOBJSTORAGE_P(orig);
-               spl_object_storage_addall(intern, orig, other);
-       }
        while (parent) {
                if (parent == spl_ce_SplObjectStorage) {
                        if (class_type != spl_ce_SplObjectStorage) {
                parent = parent->parent;
        }
  
 -              spl_SplObjectStorage *other = (spl_SplObjectStorage*)zend_object_store_get_object(orig TSRMLS_CC);
 -              spl_object_storage_addall(intern, orig, other TSRMLS_CC);
+       if (orig) {
 -      return retval;
++              spl_SplObjectStorage *other = Z_SPLOBJSTORAGE_P(orig);
++              spl_object_storage_addall(intern, orig, other);
+       }
 +      return &intern->std;
  }
  /* }}} */