diff --git a/lib/Cake/Routing/Filter/AssetDispatcher.php b/lib/Cake/Routing/Filter/AssetDispatcher.php index d1e8db107..0f11d2edf 100644 --- a/lib/Cake/Routing/Filter/AssetDispatcher.php +++ b/lib/Cake/Routing/Filter/AssetDispatcher.php @@ -124,7 +124,7 @@ class AssetDispatcher extends DispatcherFilter { } $plugin = Inflector::camelize($parts[0]); - if (CakePlugin::loaded($plugin)) { + if ($plugin && CakePlugin::loaded($plugin)) { unset($parts[0]); $fileFragment = urldecode(implode(DS, $parts)); $pluginWebroot = CakePlugin::path($plugin) . 'webroot' . DS; diff --git a/lib/Cake/Test/Case/Routing/Filter/AssetDispatcherTest.php b/lib/Cake/Test/Case/Routing/Filter/AssetDispatcherTest.php index 52be23bc5..758798dc6 100644 --- a/lib/Cake/Test/Case/Routing/Filter/AssetDispatcherTest.php +++ b/lib/Cake/Test/Case/Routing/Filter/AssetDispatcherTest.php @@ -121,4 +121,21 @@ class AssetDispatcherTest extends CakeTestCase { $this->assertSame($response, $filter->beforeDispatch($event)); $this->assertEquals($time->format('D, j M Y H:i:s') . ' GMT', $response->modified()); } + +/** + * Test that no exceptions are thrown for //index.php type urls. + * + * @return void + */ + public function test404OnDoubleSlash() { + $filter = new AssetDispatcher(); + + $response = $this->getMock('CakeResponse', array('_sendHeader')); + $request = new CakeRequest('//index.php'); + $event = new CakeEvent('Dispatcher.beforeRequest', $this, compact('request', 'response')); + + $this->assertNull($filter->beforeDispatch($event)); + $this->assertFalse($event->isStopped()); + } + }