diff --git a/library/Requests/Utility/FilteredIterator.php b/library/Requests/Utility/FilteredIterator.php
index 04700cd58..66ab323ee 100644
--- a/library/Requests/Utility/FilteredIterator.php
+++ b/library/Requests/Utility/FilteredIterator.php
@@ -39,7 +39,11 @@ public function __construct($data, $callback) {
*/
public function current() {
$value = parent::current();
- $value = call_user_func($this->callback, $value);
+
+ if (is_callable($this->callback)) {
+ $value = call_user_func($this->callback, $value);
+ }
+
return $value;
}
diff --git a/tests/Utility/FilteredIterator.php b/tests/Utility/FilteredIterator.php
index 5e833ccf2..03df70e29 100644
--- a/tests/Utility/FilteredIterator.php
+++ b/tests/Utility/FilteredIterator.php
@@ -9,8 +9,8 @@ public function testDeserializeRequestUtilityFilteredIteratorObjects($value) {
if (get_class($value) === 'Requests_Utility_FilteredIterator') {
$new_value = unserialize($serialized);
if (version_compare(PHP_VERSION, '5.3', '>=')) {
- // phpcs:ignore PHPCompatibility.Syntax.NewClassMemberAccess.OnNewFound -- Wrapped in version check.
- $property = (new ReflectionClass('Requests_Utility_FilteredIterator'))->getProperty('callback');
+ $reflection = new ReflectionClass('Requests_Utility_FilteredIterator');
+ $property = $reflection->getProperty('callback');
$property->setAccessible(true);
$callback_value = $property->getValue($new_value);
$this->assertSame(null, $callback_value);
@@ -27,6 +27,7 @@ public function dataSerializeDeserializeObjects() {
return array(
array(new Requests_Utility_FilteredIterator(array(1), 'md5')),
array(new Requests_Utility_FilteredIterator(array(1, 2), 'sha1')),
+ array(new Requests_Utility_FilteredIterator(array(1, 2, 3), 'doesnotexist')),
array(new ArrayIterator(array(1, 2, 3))),
);
}
diff --git a/tests/phpunit.xml.dist b/tests/phpunit.xml.dist
index 7f8186c7e..c29b6a5e6 100644
--- a/tests/phpunit.xml.dist
+++ b/tests/phpunit.xml.dist
@@ -27,6 +27,7 @@
Response/Headers.php
Session.php
SSL.php
+ Utility/FilteredIterator.php