mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00

Objects reuse the GC_PERSISTENT flag as IS_OBJ_WEAKLY_REFERENCED, which we did not account for in ZVAL_COPY_OR_DUP. To make things worse the incorrect zval_copy_ctor_func() invocation silently did nothing. To avoid that, add an assertion that it should only be called with arrays and strings (unlike the normal zval_copy_ctor() which can be safely called on any zval).
18 lines
249 B
PHP
18 lines
249 B
PHP
--TEST--
|
|
Use enum as WeakMap key
|
|
--FILE--
|
|
<?php
|
|
|
|
enum TestEnum {
|
|
case A;
|
|
}
|
|
|
|
$map = new WeakMap();
|
|
$map[TestEnum::A] = 'a string';
|
|
var_dump($map[TestEnum::A]);
|
|
var_dump($map[TestEnum::A]);
|
|
|
|
?>
|
|
--EXPECT--
|
|
string(8) "a string"
|
|
string(8) "a string"
|