MDL-32379: Fix memory leak in session_set_user
authorTony Levi <tony.levi@netspot.com.au>
Tue, 10 Apr 2012 03:45:39 +0000 (13:15 +0930)
committerTony Levi <tony.levi@netspot.com.au>
Tue, 10 Apr 2012 04:37:59 +0000 (14:07 +0930)
session_set_user mistakingly sets the session user to be a reference to the passed object.

This is a problem when alot of data is attached to the session user object,
as any process holding a list of these users will use more memory each time it changes user.

lib/sessionlib.php

index be15e14..c218c09 100644 (file)
@@ -1067,7 +1067,7 @@ function get_moodle_cookie() {
  * @return void
  */
 function session_set_user($user) {
-    $_SESSION['USER'] = $user;
+    $_SESSION['USER'] = clone $user;
     unset($_SESSION['USER']->description); // conserve memory
     sesskey(); // init session key