Index: webkit/browser/appcache/appcache_database.cc |
diff --git a/webkit/browser/appcache/appcache_database.cc b/webkit/browser/appcache/appcache_database.cc |
index a3dadd9eaf5515cc1f90381f636c5de6e645bfba..48b03e3f33bbe8a5863909f75905720eafd6ab3b 100644 |
--- a/webkit/browser/appcache/appcache_database.cc |
+++ b/webkit/browser/appcache/appcache_database.cc |
@@ -1019,7 +1019,7 @@ bool AppCacheDatabase::LazyOpen(bool create_if_needed) { |
db_->Preload(); |
} |
- if (!opened || !EnsureDatabaseVersion()) { |
+ if (!opened || !QuickIntegrityCheck() || !EnsureDatabaseVersion()) { |
LOG(ERROR) << "Failed to open the appcache database."; |
AppCacheHistograms::CountInitResult( |
AppCacheHistograms::SQL_DATABASE_ERROR); |
@@ -1039,6 +1039,14 @@ bool AppCacheDatabase::LazyOpen(bool create_if_needed) { |
return true; |
} |
+bool AppCacheDatabase::QuickIntegrityCheck() { |
+ DCHECK(db_.get()); |
+ std::vector<std::string> messages; |
+ if (!db_->QuickIntegrityCheck(&messages)) |
+ return false; |
+ return messages.size() == 1 && messages[0] == "ok"; |
+} |
+ |
bool AppCacheDatabase::EnsureDatabaseVersion() { |
if (!sql::MetaTable::DoesTableExist(db_.get())) |
return CreateSchema(); |