diff --git a/wp-includes/cache.php b/wp-includes/cache.php index a96be515d..5eef60b13 100644 --- a/wp-includes/cache.php +++ b/wp-includes/cache.php @@ -313,7 +313,10 @@ class WP_Object_Cache { if (isset ($this->cache[$group][$id])) { $this->cache_hits += 1; - return $this->cache[$group][$id]; + if ( is_object($this->cache[$group][$id]) ) + return wp_clone($this->cache[$group][$id]); + else + return $this->cache[$group][$id]; } if ( isset ($this->non_existant_objects[$group][$id]) ) @@ -373,6 +376,9 @@ class WP_Object_Cache { if (NULL === $data) $data = ''; + if ( is_object($data) ) + $data = wp_clone($data); + $this->cache[$group][$id] = $data; if(isset($this->non_existant_objects[$group][$id])) diff --git a/wp-includes/functions.php b/wp-includes/functions.php index 0368b09cd..da927ffcf 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -2872,4 +2872,9 @@ function wp_suspend_cache_invalidation($suspend = true) { return $current_suspend; } +function wp_clone($object) { + return version_compare(phpversion(), '5.0') < 0 ? $object : clone($object); +} + + ?>