diff options
Diffstat (limited to 'webkit/appcache/appcache_response.cc')
-rw-r--r-- | webkit/appcache/appcache_response.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/webkit/appcache/appcache_response.cc b/webkit/appcache/appcache_response.cc index 5f92439..c16bd5c 100644 --- a/webkit/appcache/appcache_response.cc +++ b/webkit/appcache/appcache_response.cc @@ -263,8 +263,15 @@ void AppCacheResponseWriter::OnIOComplete(int result) { } bool AppCacheResponseWriter::CreateEntryIfNeeded() { - if (!entry_) - disk_cache_->CreateEntry(response_key(response_id_), &entry_); + if (entry_) + return true; + std::string key(response_key(response_id_)); + if (!disk_cache_->CreateEntry(key, &entry_)) { + // We may try to overrite existing entries. + DCHECK(!entry_); + disk_cache_->DoomEntry(key); + disk_cache_->CreateEntry(key, &entry_); + } return entry_ ? true : false; } |