fix some xcache_get leak by refcount
git-svn-id: svn://svn.lighttpd.net/xcache/trunk@1576 c26eb9a1-5813-0410-bd6c-c2e55f420ca7master
parent
b6d67b60d6
commit
f843d679ae
@ -0,0 +1,101 @@
|
||||
--TEST--
|
||||
xcache_set/get test for object 5.1-
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require("skipif.inc");
|
||||
if (!version_compare(phpversion(), '5.2', '<')) {
|
||||
echo 'skip for PHP 5.1- only';
|
||||
}
|
||||
?>
|
||||
--INI--
|
||||
xcache.test = 1
|
||||
xcache.size = 32M
|
||||
xcache.var_size = 2M
|
||||
--FILE--
|
||||
<?php
|
||||
class a
|
||||
{
|
||||
}
|
||||
|
||||
class b
|
||||
{
|
||||
}
|
||||
|
||||
$a = new a();
|
||||
$b = new b();
|
||||
$stdclass = new stdclass();
|
||||
|
||||
$b->a = $a;
|
||||
$b->b = $b;
|
||||
$b->array = array($b, $a);
|
||||
$b->stdclass = $stdclass;
|
||||
|
||||
var_dump(xcache_set("a", $a));
|
||||
unset($a);
|
||||
var_dump($a = xcache_get("a"));
|
||||
|
||||
var_dump(xcache_set("b", $b));
|
||||
unset($b);
|
||||
var_dump($b = xcache_get("b"));
|
||||
|
||||
$b->test = 1;
|
||||
var_dump($b->b->test);
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
object(a)#4 (0) {
|
||||
}
|
||||
bool(true)
|
||||
object(b)#7 (4) {
|
||||
["a"]=>
|
||||
object(a)#6 (0) {
|
||||
}
|
||||
["b"]=>
|
||||
object(b)#7 (4) {
|
||||
["a"]=>
|
||||
object(a)#6 (0) {
|
||||
}
|
||||
["b"]=>
|
||||
*RECURSION*
|
||||
["array"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
[1]=>
|
||||
object(a)#6 (0) {
|
||||
}
|
||||
}
|
||||
["stdclass"]=>
|
||||
object(stdClass)#5 (0) {
|
||||
}
|
||||
}
|
||||
["array"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
object(b)#7 (4) {
|
||||
["a"]=>
|
||||
object(a)#6 (0) {
|
||||
}
|
||||
["b"]=>
|
||||
*RECURSION*
|
||||
["array"]=>
|
||||
array(2) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
[1]=>
|
||||
object(a)#6 (0) {
|
||||
}
|
||||
}
|
||||
["stdclass"]=>
|
||||
object(stdClass)#5 (0) {
|
||||
}
|
||||
}
|
||||
[1]=>
|
||||
object(a)#6 (0) {
|
||||
}
|
||||
}
|
||||
["stdclass"]=>
|
||||
object(stdClass)#5 (0) {
|
||||
}
|
||||
}
|
||||
int(1)
|
@ -0,0 +1,60 @@
|
||||
--TEST--
|
||||
xcache_set/get test for reference for PHP 4
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require("skipif.inc");
|
||||
if (!(version_compare(phpversion(), '5.0', '<'))) {
|
||||
echo 'skip for PHP 4 only';
|
||||
}
|
||||
?>
|
||||
--INI--
|
||||
xcache.test = 1
|
||||
xcache.size = 32M
|
||||
xcache.var_size = 2M
|
||||
--FILE--
|
||||
<?php
|
||||
$ref = array();
|
||||
$ref['ref'] = &$ref;
|
||||
$ref['array'] = array(&$ref);
|
||||
var_dump(xcache_set("ref", $ref));
|
||||
|
||||
unset($ref);
|
||||
$ref = xcache_get("ref");
|
||||
var_dump(array(&$ref));
|
||||
|
||||
$ref['test'] = 1;
|
||||
var_dump($ref['ref']['test']);
|
||||
var_dump($ref['array'][0]['test']);
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
array(1) {
|
||||
[0]=>
|
||||
&array(2) {
|
||||
["ref"]=>
|
||||
&array(2) {
|
||||
["ref"]=>
|
||||
*RECURSION*
|
||||
["array"]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
["array"]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
&array(2) {
|
||||
["ref"]=>
|
||||
*RECURSION*
|
||||
["array"]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
int(1)
|
||||
int(1)
|
@ -0,0 +1,60 @@
|
||||
--TEST--
|
||||
xcache_set/get test for reference for PHP 5.{0,1}
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require("skipif.inc");
|
||||
if (!(version_compare(phpversion(), '5.0', '>=') && version_compare(phpversion(), '5.2', '<'))) {
|
||||
echo 'skip for PHP 5.{0,1} only';
|
||||
}
|
||||
?>
|
||||
--INI--
|
||||
xcache.test = 1
|
||||
xcache.size = 32M
|
||||
xcache.var_size = 2M
|
||||
--FILE--
|
||||
<?php
|
||||
$ref = array();
|
||||
$ref['ref'] = &$ref;
|
||||
$ref['array'] = array(&$ref);
|
||||
var_dump(xcache_set_ref("ref", $ref));
|
||||
|
||||
unset($ref);
|
||||
$ref = &xcache_get_ref("ref");
|
||||
var_dump(array(&$ref));
|
||||
|
||||
$ref['test'] = 1;
|
||||
var_dump($ref['ref']['test']);
|
||||
var_dump($ref['array'][0]['test']);
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
||||
array(1) {
|
||||
[0]=>
|
||||
&array(2) {
|
||||
["ref"]=>
|
||||
&array(2) {
|
||||
["ref"]=>
|
||||
*RECURSION*
|
||||
["array"]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
["array"]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
&array(2) {
|
||||
["ref"]=>
|
||||
*RECURSION*
|
||||
["array"]=>
|
||||
array(1) {
|
||||
[0]=>
|
||||
*RECURSION*
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
int(1)
|
||||
int(1)
|
Loading…
Reference in New Issue