Workaround possible issue where some keys were ignored when deleting cached entries

by key name prefix and keys index is in inconsistent state (does not contain all keys)
pull/247/merge
Aleksander Machniak 10 years ago
parent 44708ec647
commit 247b845a8e

@ -418,7 +418,13 @@ class rcube_cache
} }
// Remove keys by name prefix // Remove keys by name prefix
else if ($prefix_mode) { else if ($prefix_mode) {
foreach ($this->index as $k) { // handle data inconsistency: it may happen that index
// contains not all existing cache entries, here we could
// handle at least these that were used before the index was read
$index = array_merge($this->index, array_keys($this->cache));
$index = array_unique($index);
foreach ($index as $k) {
if (strpos($k, $key) === 0) { if (strpos($k, $key) === 0) {
$this->delete_record($k); $this->delete_record($k);
} }

Loading…
Cancel
Save