From ee7a432c552f29f8393a30a88830740b24f4b7ec Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 19 Jan 2006 22:12:15 +0000 Subject: [PATCH] Cache flush improvements from Owen. fixes #2223 #2278 git-svn-id: http://svn.automattic.com/wordpress/trunk@3465 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/cache.php | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/wp-includes/cache.php b/wp-includes/cache.php index 3ca913f13..4dd396d7e 100644 --- a/wp-includes/cache.php +++ b/wp-includes/cache.php @@ -235,10 +235,11 @@ class WP_Object_Cache { $dir = rtrim($dir, DIRECTORY_SEPARATOR); $top_dir = $dir; $stack = array($dir); + $index = 0; - while (count($stack)) { - # Get last directory on stack - $dir = end($stack); + while ($index < count($stack)) { + # Get indexed directory from stack + $dir = $stack[$index]; $dh = @ opendir($dir); if (!$dh) @@ -247,19 +248,22 @@ class WP_Object_Cache { while (($file = @ readdir($dh)) !== false) { if ($file == '.' or $file == '..') continue; - + if (@ is_dir($dir . DIRECTORY_SEPARATOR . $file)) $stack[] = $dir . DIRECTORY_SEPARATOR . $file; else if (@ is_file($dir . DIRECTORY_SEPARATOR . $file)) @ unlink($dir . DIRECTORY_SEPARATOR . $file); } - if (end($stack) == $dir) { - if ( $dir != $top_dir) - @ rmdir($dir); - array_pop($stack); - } + $index++; } + + $stack = array_reverse($stack); // Last added dirs are deepest + foreach($stack as $dir) { + if ( $dir != $top_dir) + @ rmdir($dir); + } + } function release_lock() { @@ -403,7 +407,8 @@ class WP_Object_Cache { if (defined('CACHE_PATH')) $this->cache_dir = CACHE_PATH; else - $this->cache_dir = ABSPATH.'wp-content/cache/'; + // Using the correct separator eliminates some cache flush errors on Windows + $this->cache_dir = ABSPATH.'wp-content'.DIRECTORY_SEPARATOR.'cache'.DIRECTORY_SEPARATOR; if (is_writable($this->cache_dir) && is_dir($this->cache_dir)) { $this->cache_enabled = true;