From b0f42333a59ff8e7a443ec8658c182725a2fb9bd Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 4 Oct 2019 09:39:26 +0200 Subject: [PATCH] [VarDumper] fix dumping uninitialized SplFileInfo --- .../Component/VarDumper/Caster/SplCaster.php | 6 ++++++ .../VarDumper/Tests/Caster/SplCasterTest.php | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/Symfony/Component/VarDumper/Caster/SplCaster.php b/src/Symfony/Component/VarDumper/Caster/SplCaster.php index a223adb7f2..283c5613d0 100644 --- a/src/Symfony/Component/VarDumper/Caster/SplCaster.php +++ b/src/Symfony/Component/VarDumper/Caster/SplCaster.php @@ -90,6 +90,12 @@ class SplCaster $prefix = Caster::PREFIX_VIRTUAL; + if (false === $c->getPathname()) { + $a[$prefix.'⚠'] = 'The parent constructor was not called: the object is in an invalid state'; + + return $a; + } + foreach ($map as $key => $accessor) { try { $a[$prefix.$key] = $c->$accessor(); diff --git a/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php b/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php index a146a2f6b9..67033df091 100644 --- a/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php +++ b/src/Symfony/Component/VarDumper/Tests/Caster/SplCasterTest.php @@ -202,6 +202,18 @@ Symfony\Component\VarDumper\Tests\Caster\MyArrayIterator { 0 => 234 ] } +EOTXT; + $this->assertDumpEquals($expected, $var); + } + + public function testBadSplFileInfo() + { + $var = new BadSplFileInfo(); + + $expected = <<assertDumpEquals($expected, $var); } @@ -211,3 +223,10 @@ class MyArrayIterator extends \ArrayIterator { private $foo = 123; } + +class BadSplFileInfo extends \SplFileInfo +{ + public function __construct() + { + } +}