]> granicus.if.org Git - php/commitdiff
Fixed bug #62715 (ReflectionParameter::isDefaultValueAvailable() wrong result)
authorXinchen Hui <laruence@php.net>
Wed, 1 Aug 2012 12:23:30 +0000 (20:23 +0800)
committerXinchen Hui <laruence@php.net>
Wed, 1 Aug 2012 12:23:30 +0000 (20:23 +0800)
NEWS
ext/reflection/php_reflection.c
ext/reflection/tests/bug62715.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 5aa35d7e20b923648f1b6ad1641fb41ffdc23f2b..b836d4f680086d1464534e51e0afa9cea014d33b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -13,6 +13,10 @@ PHP                                                                        NEWS
 - DateTime:
   . Fixed Bug #62500 (Segfault in DateInterval class when extended). (Laruence)
 
+- Reflection:
+  . Fixed bug #62715 (ReflectionParameter::isDefaultValueAvailable() wrong
+    result). (Laruence)
+
 - SPL:
   . Fixed bug #62616 (ArrayIterator::count() from IteratorIterator instance
     gives Segmentation fault). (Laruence, Gustavo)
index e98652ba2326bd9391b730afdaf96c017d9fab48..23c90449811cd1a9c860b115456b64946c2823a9 100644 (file)
@@ -2379,9 +2379,7 @@ ZEND_METHOD(reflection_parameter, isDefaultValueAvailable)
        {
                RETURN_FALSE;
        }
-       if (param->offset < param->required) {
-               RETURN_FALSE;
-       }
+
        precv = _get_recv_op((zend_op_array*)param->fptr, param->offset);
        if (!precv || precv->opcode != ZEND_RECV_INIT || precv->op2.op_type == IS_UNUSED) {
                RETURN_FALSE;
diff --git a/ext/reflection/tests/bug62715.phpt b/ext/reflection/tests/bug62715.phpt
new file mode 100644 (file)
index 0000000..721d484
--- /dev/null
@@ -0,0 +1,17 @@
+--TEST--
+Bug #62715 (ReflectionParameter::isDefaultValueAvailable() wrong result)
+--FILE--
+<?php
+
+function test(PDO $a = null, $b = 0, array $c) {}
+$r = new ReflectionFunction('test');
+
+foreach ($r->getParameters() as $p) {
+    var_dump($p->isDefaultValueAvailable());
+}
+
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(false)