diff --git a/lib/Cake/Model/Datasource/CakeSession.php b/lib/Cake/Model/Datasource/CakeSession.php index 96a66d899cd..66497170f8f 100644 --- a/lib/Cake/Model/Datasource/CakeSession.php +++ b/lib/Cake/Model/Datasource/CakeSession.php @@ -267,7 +267,7 @@ public static function id($id = null) { * @return bool Success */ public static function delete($name) { - if (self::check($name)) { + if (self::start() && self::check($name)) { self::_overwrite($_SESSION, Hash::remove($_SESSION, $name)); return !self::check($name); } diff --git a/lib/Cake/Test/Case/Model/Datasource/CakeSessionTest.php b/lib/Cake/Test/Case/Model/Datasource/CakeSessionTest.php index 7f70ea82ce1..677e38b76ab 100644 --- a/lib/Cake/Test/Case/Model/Datasource/CakeSessionTest.php +++ b/lib/Cake/Test/Case/Model/Datasource/CakeSessionTest.php @@ -365,6 +365,12 @@ public function testStarted() { * @return void */ public function testDelete() { + $this->assertTrue(TestCakeSession::write('Delete.me', 'Clearing out')); + + session_write_close(); + $this->assertTrue(TestCakeSession::delete('Delete.me')); + $this->assertFalse(TestCakeSession::check('Delete.me')); + $this->assertTrue(TestCakeSession::write('Delete.me', 'Clearing out')); $this->assertTrue(TestCakeSession::delete('Delete.me')); $this->assertFalse(TestCakeSession::check('Delete.me'));