From 18bdafb38118fb6f2db94205fea8252a03e57b78 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 14 Jul 2026 20:42:41 +0200 Subject: [PATCH] fix: prevent null pointer errors in get_dir_file_info when get_file_info returns null --- system/Helpers/filesystem_helper.php | 6 ++++-- tests/system/Helpers/FilesystemHelperTest.php | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/system/Helpers/filesystem_helper.php b/system/Helpers/filesystem_helper.php index da6acabb039e..21a4d634e532 100644 --- a/system/Helpers/filesystem_helper.php +++ b/system/Helpers/filesystem_helper.php @@ -281,8 +281,10 @@ function get_dir_file_info(string $sourceDir, bool $topLevelOnly = true, bool $r if (is_dir($sourceDir . $file) && $file[0] !== '.' && $topLevelOnly === false) { get_dir_file_info($sourceDir . $file . DIRECTORY_SEPARATOR, $topLevelOnly, true); } elseif ($file[0] !== '.') { - $fileData[$file] = get_file_info($sourceDir . $file); - $fileData[$file]['relative_path'] = $relativePath; + if (($info = get_file_info($sourceDir . $file)) !== null) { + $fileData[$file] = $info; + $fileData[$file]['relative_path'] = $relativePath; + } } } diff --git a/tests/system/Helpers/FilesystemHelperTest.php b/tests/system/Helpers/FilesystemHelperTest.php index a8ee76d6ab09..9d4bf74eb4e5 100644 --- a/tests/system/Helpers/FilesystemHelperTest.php +++ b/tests/system/Helpers/FilesystemHelperTest.php @@ -477,6 +477,22 @@ public function testGetDirFileInfoFailure(): void $this->assertSame($expected, get_dir_file_info(SUPPORTPATH . 'Files#baker')); } + public function testGetDirFileInfoIgnoresDirectoriesWhenTopLevelOnlyIsTrue(): void + { + $dir = WRITEPATH . 'test_get_dir_file_info'; + mkdir($dir . '/subdir', 0777, true); + file_put_contents($dir . '/file.txt', 'test'); + + $result = get_dir_file_info($dir, true); + + unlink($dir . '/file.txt'); + rmdir($dir . '/subdir'); + rmdir($dir); + + $this->assertArrayHasKey('file.txt', $result); + $this->assertArrayNotHasKey('subdir', $result); + } + public function testGetFileInfo(): void { $file = SUPPORTPATH . 'Files/baker/banana.php';