From 10642aa9e4f1eb694a8f7b514cc234cb24545744 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Wed, 1 Aug 2012 20:23:30 +0800 Subject: [PATCH] Fixed bug #62715 (ReflectionParameter::isDefaultValueAvailable() wrong result) --- NEWS | 4 ++++ ext/reflection/php_reflection.c | 4 +--- ext/reflection/tests/bug62715.phpt | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 ext/reflection/tests/bug62715.phpt diff --git a/NEWS b/NEWS index 5aa35d7e20..b836d4f680 100644 --- 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) diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index e98652ba23..23c9044981 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -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 index 0000000000..721d484c71 --- /dev/null +++ b/ext/reflection/tests/bug62715.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #62715 (ReflectionParameter::isDefaultValueAvailable() wrong result) +--FILE-- +getParameters() as $p) { + var_dump($p->isDefaultValueAvailable()); +} + +?> +--EXPECT-- +bool(true) +bool(true) +bool(false) -- 2.40.0