Use clone to break object refs when setting and getting cache. see #8146 #8191

git-svn-id: https://develop.svn.wordpress.org/trunk@9740 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ryan Boren 2008-11-17 21:01:12 +00:00
parent 013e95be71
commit 0aba3305b3
2 changed files with 12 additions and 1 deletions

View File

@ -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]))

View File

@ -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);
}
?>