summaryrefslogtreecommitdiffstats
path: root/webkit/appcache/appcache_response.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/appcache/appcache_response.cc')
-rw-r--r--webkit/appcache/appcache_response.cc11
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;
}