- Fixed building of pdo_sqlite without sqlite3. (Scott)
- Fixed bug #47050 (mysqli_poll() modifies improper variables). (Johannes)
+- Fixed bug #47045 (SplObjectStorage instances compared with ==). (Etienne)
- Fixed bug #46979 (use with non-compound name *has* effect). (Dmitry)
- Fixed bug #46957 (The tokenizer returns deprecated values). (Felipe)
- Fixed bug #46944 (UTF-8 characters outside the BMP aren't encoded correctly).
}
/* }}} */
+static int spl_object_storage_compare_info(spl_SplObjectStorageElement *e1, spl_SplObjectStorageElement *e2 TSRMLS_DC) /* {{{ */
+{
+ zval result;
+
+ if (compare_function(&result, e1->inf, e2->inf TSRMLS_CC) == FAILURE) {
+ return 1;
+ }
+
+ return Z_LVAL(result);
+}
+/* }}} */
+
+static int spl_object_storage_compare_objects(zval *o1, zval *o2 TSRMLS_DC) /* {{{ */
+{
+ zend_object *zo1 = (zend_object *)zend_object_store_get_object(o1 TSRMLS_CC);
+ zend_object *zo2 = (zend_object *)zend_object_store_get_object(o2 TSRMLS_CC);
+
+ if (zo1->ce != spl_ce_SplObjectStorage || zo2->ce != spl_ce_SplObjectStorage) {
+ return 1;
+ }
+
+ return zend_hash_compare(&((spl_SplObjectStorage *)zo1)->storage, &((spl_SplObjectStorage *)zo2)->storage, (compare_func_t) spl_object_storage_compare_info, 0 TSRMLS_CC);
+}
+/* }}} */
+
/* {{{ spl_array_object_new */
static zend_object_value spl_SplObjectStorage_new(zend_class_entry *class_type TSRMLS_DC)
{
REGISTER_SPL_STD_CLASS_EX(SplObjectStorage, spl_SplObjectStorage_new, spl_funcs_SplObjectStorage);
memcpy(&spl_handler_SplObjectStorage, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
- spl_handler_SplObjectStorage.get_debug_info = spl_object_storage_debug_info;
+
+ spl_handler_SplObjectStorage.get_debug_info = spl_object_storage_debug_info;
+ spl_handler_SplObjectStorage.compare_objects = spl_object_storage_compare_objects;
REGISTER_SPL_IMPLEMENTS(SplObjectStorage, Countable);
REGISTER_SPL_IMPLEMENTS(SplObjectStorage, Iterator);