aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/includes/class_loader.php2
-rw-r--r--tests/class_loader/class_loader_test.php6
-rw-r--r--tests/class_loader/includes/dir.php6
3 files changed, 13 insertions, 1 deletions
diff --git a/phpBB/includes/class_loader.php b/phpBB/includes/class_loader.php
index c70351b437..5df654799a 100644
--- a/phpBB/includes/class_loader.php
+++ b/phpBB/includes/class_loader.php
@@ -115,7 +115,7 @@ class phpbb_class_loader
$dirs = '';
- for ($i = 0; is_dir($path_prefix . $dirs . $parts[$i]) && $i < sizeof($parts); $i++)
+ for ($i = 0, $n = sizeof($parts); $i < $n && is_dir($path_prefix . $dirs . $parts[$i]); $i++)
{
$dirs .= $parts[$i] . '/';
}
diff --git a/tests/class_loader/class_loader_test.php b/tests/class_loader/class_loader_test.php
index 37c11657c4..e53507ded3 100644
--- a/tests/class_loader/class_loader_test.php
+++ b/tests/class_loader/class_loader_test.php
@@ -24,6 +24,12 @@ class phpbb_class_loader_test extends PHPUnit_Framework_TestCase
$prefix .= 'includes/';
$this->assertEquals(
+ '',
+ $class_loader->resolve_path('phpbb_dir'),
+ 'Class with same name as a directory is unloadable'
+ );
+
+ $this->assertEquals(
$prefix . 'class_name.php',
$class_loader->resolve_path('phpbb_class_name'),
'Top level class'
diff --git a/tests/class_loader/includes/dir.php b/tests/class_loader/includes/dir.php
new file mode 100644
index 0000000000..1c8930d8e7
--- /dev/null
+++ b/tests/class_loader/includes/dir.php
@@ -0,0 +1,6 @@
+<?php
+
+class phpbb_dir
+{
+}
+