mirror of
https://github.com/macintoshplus/mongo-php-driver.git
synced 2026-03-27 02:12:18 +01:00
* Re-enable PHP 8.1 build on GH Actions * Work around different error wording in PHP 8.1 * Limit failing tests to PHP < 8.1 * Add tests for PHPC-1839 for PHP >= 8.1
60 lines
1.2 KiB
PHP
60 lines
1.2 KiB
PHP
--TEST--
|
|
PHPC-1839: Referenced, out-of-scope, non-interned string in typeMap (PHP >= 8.1)
|
|
--SKIPIF--
|
|
<?php require __DIR__ . "/../utils/basic-skipif.inc"; ?>
|
|
<?php skip_if_php_version('<', '8.1'); ?>
|
|
--FILE--
|
|
<?php
|
|
require_once __DIR__ . "/../utils/basic.inc";
|
|
|
|
function createTypemap()
|
|
{
|
|
// Assemble the string so as to not have an interned string
|
|
$rootValue = chr(ord('a')) . 'rray';
|
|
$documentValue = chr(ord('a')) . 'rray';
|
|
|
|
// Use a reference to this non-interned string in the type map
|
|
$typemap = ['root' => &$rootValue, 'document' => &$documentValue];
|
|
|
|
return $typemap;
|
|
}
|
|
|
|
$typemap = createTypemap();
|
|
$bson = MongoDB\BSON\fromPhp((object) []);
|
|
|
|
echo "Before:\n";
|
|
debug_zval_dump($typemap);
|
|
|
|
MongoDB\BSON\toPHP($bson, $typemap);
|
|
|
|
echo "After:\n";
|
|
debug_zval_dump($typemap);
|
|
|
|
?>
|
|
===DONE===
|
|
<?php exit(0); ?>
|
|
--EXPECT--
|
|
Before:
|
|
array(2) refcount(2){
|
|
["root"]=>
|
|
reference refcount(1) {
|
|
string(5) "array" refcount(1)
|
|
}
|
|
["document"]=>
|
|
reference refcount(1) {
|
|
string(5) "array" refcount(1)
|
|
}
|
|
}
|
|
After:
|
|
array(2) refcount(2){
|
|
["root"]=>
|
|
reference refcount(1) {
|
|
string(5) "array" refcount(1)
|
|
}
|
|
["document"]=>
|
|
reference refcount(1) {
|
|
string(5) "array" refcount(1)
|
|
}
|
|
}
|
|
===DONE===
|