Fix missing index update after write() call

pull/247/merge
Aleksander Machniak 9 years ago
parent 46d316b9c5
commit 652e11f82e

@ -354,7 +354,14 @@ class rcube_cache
}
if ($this->type == 'memcache' || $this->type == 'apc') {
return $this->add_record($this->ckey($key), $data);
$result = $this->add_record($this->ckey($key), $data);
// make sure index will be updated
if ($result && !array_key_exists($key, $this->cache_sums)) {
$this->cache_sums[$key] = true;
}
return $result;
}
$key_exists = array_key_exists($key, $this->cache_sums);
@ -543,10 +550,15 @@ class rcube_cache
// Make sure index contains new keys
foreach ($this->cache as $key => $value) {
if ($value !== null) {
if (array_search($key, $this->index) === false) {
$this->index[] = $key;
}
if ($value !== null && !in_array($key, $this->index)) {
$this->index[] = $key;
}
}
// new keys added using self::write()
foreach ($this->cache_sums as $key => $value) {
if ($value === true && !in_array($key, $this->index)) {
$this->index[] = $key;
}
}

@ -348,7 +348,14 @@ class rcube_cache_shared
}
if ($this->type == 'memcache' || $this->type == 'apc') {
return $this->add_record($this->ckey($key), $data);
$result = $this->add_record($this->ckey($key), $data);
// make sure index will be updated
if ($result && !array_key_exists($key, $this->cache_sums)) {
$this->cache_sums[$key] = true;
}
return $result;
}
$key_exists = array_key_exists($key, $this->cache_sums);
@ -531,10 +538,15 @@ class rcube_cache_shared
// Make sure index contains new keys
foreach ($this->cache as $key => $value) {
if ($value !== null) {
if (array_search($key, $this->index) === false) {
$this->index[] = $key;
}
if ($value !== null && !in_array($key, $this->index)) {
$this->index[] = $key;
}
}
// new keys added using self::write()
foreach ($this->cache_sums as $key => $value) {
if ($value === true && !in_array($key, $this->index)) {
$this->index[] = $key;
}
}

Loading…
Cancel
Save