diff --git a/lib/tests/textlib_test.php b/lib/tests/textlib_test.php index 68a1bf2e7b0..116f313c9a5 100644 --- a/lib/tests/textlib_test.php +++ b/lib/tests/textlib_test.php @@ -476,6 +476,13 @@ class collatorlib_testcase extends basic_testcase { $this->assertSame(array_values($arr), array('aa', 'ab', 'áb', 'Áb', 'cc'), $this->error); $this->assertSame(array_keys($arr), array(1, 'b', 'a', 'x', 0), $this->error); $this->assertTrue($result); + + $a = array(2=>'b', 1=>'c'); + $c =& $a; + $b =& $a; + collatorlib::asort($b); + $this->assertSame($a, $b); + $this->assertSame($c, $b); } /** @@ -565,6 +572,13 @@ class collatorlib_testcase extends basic_testcase { $this->assertSame(array_keys($arr), array('1.1.1', '1.2', '1.20.2')); $this->assertSame(array_values($arr), array(array(), $obj, null)); $this->assertTrue($result); + + $a = array(2=>'b', 1=>'c'); + $c =& $a; + $b =& $a; + collatorlib::ksort($b); + $this->assertSame($a, $b); + $this->assertSame($c, $b); } } diff --git a/lib/textlib.class.php b/lib/textlib.class.php index 14dcb5b1880..540e4a4946a 100644 --- a/lib/textlib.class.php +++ b/lib/textlib.class.php @@ -872,10 +872,7 @@ class collatorlib { } // This is a bit slow, but we need to keep the references $original = $arr; - $count = count($arr); - for($i=0; $i<$count; $i++) { - array_pop($arr); - } + $arr = array(); // Surprisingly this does not break references outside foreach ($keys as $key) { $arr[$key] = $original[$key]; }