]> granicus.if.org Git - php/commitdiff
MFB51: Fixed bug #35022, #35019 (Regression in the behavior of key/current
authorIlia Alshanetsky <iliaa@php.net>
Sun, 30 Oct 2005 18:04:20 +0000 (18:04 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sun, 30 Oct 2005 18:04:20 +0000 (18:04 +0000)
functions).

ext/standard/basic_functions.c
ext/standard/tests/array/bug35022.phpt [new file with mode: 0644]

index 738cd7c20358b0cd1ad91bac4080bf35b7805ec2..8f0eb720ffa1086807ba3906ab602f5e8afe5cea 100644 (file)
@@ -760,8 +760,8 @@ function_entry basic_functions[] = {
        PHP_FE(prev,                                    first_arg_force_ref)
        PHP_FE(next,                                    first_arg_force_ref)
        PHP_FE(reset,                                   first_arg_force_ref)
-       PHP_FE(current,                                 NULL)
-       PHP_FE(key,                                     NULL)
+       PHP_FE(current,                                 all_args_prefer_ref)
+       PHP_FE(key,                                     all_args_prefer_ref)
        PHP_FE(min,                                                                                                                             NULL)
        PHP_FE(max,                                                                                                                             NULL)
        PHP_FE(in_array,                                                                                                                NULL)
diff --git a/ext/standard/tests/array/bug35022.phpt b/ext/standard/tests/array/bug35022.phpt
new file mode 100644 (file)
index 0000000..e3f5386
--- /dev/null
@@ -0,0 +1,21 @@
+--TEST--
+Bug #35022 (Regression in the behavior of key/current functions)
+--FILE--
+<?php
+$state = array("one" => 1, "two" => 2, "three" => 3);
+function foo( &$state ) {
+    $contentDict = end( $state );
+    for ( $contentDict = end( $state ); $contentDict !== false; $contentDict = prev( $state ) ) {
+       echo key($state) . " => " . current($state) . "\n";
+    }
+}
+foo($state);
+reset($state);
+var_dump( key($state), current($state) );
+?>
+--EXPECT--     
+three => 3
+two => 2
+one => 1
+string(3) "one"
+int(1)