1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.0'

* PHP-8.0:
  Fixed bug #80723
This commit is contained in:
Nikita Popov
2021-02-16 12:34:00 +01:00
4 changed files with 31 additions and 0 deletions

View File

@@ -1608,6 +1608,11 @@ ZEND_API int zend_std_compare_objects(zval *o1, zval *o2) /* {{{ */
}
/* }}} */
ZEND_API int zend_objects_not_comparable(zval *o1, zval *o2)
{
return ZEND_UNCOMPARABLE;
}
ZEND_API int zend_std_has_property(zend_object *zobj, zend_string *name, int has_set_exists, void **cache_slot) /* {{{ */
{
int result;

View File

@@ -225,6 +225,10 @@ ZEND_API int zend_std_compare_objects(zval *o1, zval *o2);
ZEND_API int zend_std_get_closure(zend_object *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zend_object **obj_ptr, bool check_only);
ZEND_API void rebuild_object_properties(zend_object *zobj);
/* Handler for objects that cannot be meaningfully compared.
* Only objects with the same identity will be considered equal. */
ZEND_API int zend_objects_not_comparable(zval *o1, zval *o2);
ZEND_API int zend_check_protected(zend_class_entry *ce, zend_class_entry *scope);
ZEND_API int zend_check_property_access(zend_object *zobj, zend_string *prop_info_name, bool is_dynamic);

View File

@@ -443,6 +443,7 @@ static PHP_MINIT_FUNCTION(sockets)
socket_object_handlers.get_constructor = socket_get_constructor;
socket_object_handlers.clone_obj = NULL;
socket_object_handlers.get_gc = socket_get_gc;
socket_object_handlers.compare = zend_objects_not_comparable;
address_info_ce = register_class_AddressInfo();
address_info_ce->create_object = address_info_create_object;

View File

@@ -0,0 +1,21 @@
--TEST--
Bug #80723: Different sockets compare as equal (regression in 8.0)
--FILE--
<?php
$socket_1 = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$socket_2 = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
var_dump($socket_1 == $socket_1);
var_dump($socket_2 == $socket_2);
var_dump($socket_1 == $socket_2);
$vector = array(1 => $socket_1, 2 => $socket_2);
var_dump(array_search($socket_1, $vector));
var_dump(array_search($socket_2, $vector));
?>
--EXPECT--
bool(true)
bool(true)
bool(false)
int(1)
int(2)