From: Marcus Boerger <helly@php.net>
Date: Tue, 11 Oct 2005 00:18:32 +0000 (+0000)
Subject: - Provide const RegExIterator::USE_KEY and actually use it in the test
X-Git-Tag: RELEASE_0_9_1~152
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=68f663eaf835976d2346ffd115bd01824af67fd8;p=php

- Provide const RegExIterator::USE_KEY and actually use it in the test
---

diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c
index da9cfc4b9a..a3d3623afa 100755
--- a/ext/spl/spl_iterators.c
+++ b/ext/spl/spl_iterators.c
@@ -1268,7 +1268,7 @@ SPL_METHOD(RegExIterator, accept)
 
 	intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
 	
-	if (intern->u.regex.flags) {
+	if (intern->u.regex.flags & REGIT_USE_KEY) {
 		if (intern->current.key_type == HASH_KEY_IS_LONG) {
 			subject_len = snprintf(tmp, sizeof(tmp), "%ld", intern->current.int_key);
 			subject = &tmp[0];
@@ -2434,6 +2434,7 @@ PHP_MINIT_FUNCTION(spl_iterators)
 	REGISTER_SPL_SUB_CLASS_EX(InfiniteIterator, IteratorIterator, spl_dual_it_new, spl_funcs_InfiniteIterator);
 #if HAVE_PCRE || HAVE_BUNDLED_PCRE
 	REGISTER_SPL_SUB_CLASS_EX(RegExIterator, FilterIterator, spl_dual_it_new, spl_funcs_RegExIterator);
+	REGISTER_SPL_CLASS_CONST_LONG(RegExIterator, "USE_KEY", REGIT_USE_KEY);
 	REGISTER_SPL_SUB_CLASS_EX(RecursiveRegExIterator, RegExIterator, spl_dual_it_new, spl_funcs_RecursiveRegExIterator);
 	REGISTER_SPL_IMPLEMENTS(RecursiveRegExIterator, RecursiveIterator);
 #else
diff --git a/ext/spl/spl_iterators.h b/ext/spl/spl_iterators.h
index 0868373592..1f3e135734 100755
--- a/ext/spl/spl_iterators.h
+++ b/ext/spl/spl_iterators.h
@@ -85,6 +85,11 @@ enum {
 	CIT_HAS_CHILDREN         = 0x00020000
 };
 
+enum {
+	/* public */
+	REGIT_USE_KEY            = 0x00000001,
+};
+
 typedef struct _spl_dual_it_object {
 	zend_object              std;
 	struct {
diff --git a/ext/spl/tests/iterator_029.phpt b/ext/spl/tests/iterator_029.phpt
index b1643a5e3f..b853f830e4 100755
--- a/ext/spl/tests/iterator_029.phpt
+++ b/ext/spl/tests/iterator_029.phpt
@@ -5,7 +5,7 @@ SPL: RegExIterator
 
 $ar = array(0, "123", 123, 22 => "abc", "a2b", 22, "a2d" => 7, 42);
 
-foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v)
+foreach(new RegExIterator(new ArrayIterator($ar), "/2/") as $k => $v)
 {
 	echo "$k=>$v\n";
 }
@@ -14,7 +14,7 @@ foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v)
 ===KEY===
 <?php
 
-foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v)
+foreach(new RegExIterator(new ArrayIterator($ar), "/2/", RegExIterator::USE_KEY) as $k => $v)
 {
 	echo "$k=>$v\n";
 }
@@ -29,9 +29,10 @@ foreach(new RegExIterator(new ArrayIterator($ar), "/2/", 0) as $k => $v)
 24=>22
 25=>42
 ===KEY===
-1=>123
 2=>123
+22=>abc
 23=>a2b
 24=>22
+a2d=>7
 25=>42
 ===DONE===