diff --git a/lib/private/session/internal.php b/lib/private/session/internal.php index 60aecccc8aac255ec08fb7f83cf4b572160c6fe9..a7c9e2fdefd36ed8620e403b85d1a59dcab73187 100644 --- a/lib/private/session/internal.php +++ b/lib/private/session/internal.php @@ -26,10 +26,21 @@ class Internal extends Memory { } public function __destruct() { - $_SESSION = $this->data; + $_SESSION = array_merge($_SESSION, $this->data); session_write_close(); } + /** + * @param string $key + */ + public function remove($key) { + // also remove it from $_SESSION to prevent re-setting the old value during the merge + if (isset($_SESSION[$key])) { + unset($_SESSION[$key]); + } + parent::remove($key); + } + public function clear() { session_unset(); @session_regenerate_id(true); diff --git a/lib/private/session/memory.php b/lib/private/session/memory.php index c148ff4b9b9928af848b7895e9132ce02ea73bd0..134cee582eda34c7bfc67f2b834d3a6081751aed 100644 --- a/lib/private/session/memory.php +++ b/lib/private/session/memory.php @@ -11,7 +11,7 @@ namespace OC\Session; /** * Class Internal * - * store session data in an in-memory array, not persistance + * store session data in an in-memory array, not persistent * * @package OC\Session */