Index: sql/statement.cc |
diff --git a/sql/statement.cc b/sql/statement.cc |
index cd55bf710ff94ca4d3ea1def37f3ebed41815a3a..6e5cf3e0f2bbe70dbb7f02c97a8a881ba6fa532f 100644 |
--- a/sql/statement.cc |
+++ b/sql/statement.cc |
@@ -42,8 +42,10 @@ void Statement::Clear() { |
} |
bool Statement::CheckValid() const { |
- if (!is_valid()) |
- DLOG(FATAL) << "Cannot call mutating statements on an invalid statement."; |
+ // Allow operations to fail silently if a statement was invalidated |
+ // because the database was closed by an error handler. |
+ DLOG_IF(FATAL, !ref_->was_valid()) |
+ << "Cannot call mutating statements on an invalid statement."; |
return is_valid(); |
} |
@@ -306,7 +308,7 @@ bool Statement::CheckOk(int err) const { |
int Statement::CheckError(int err) { |
// Please don't add DCHECKs here, OnSqliteError() already has them. |
succeeded_ = (err == SQLITE_OK || err == SQLITE_ROW || err == SQLITE_DONE); |
- if (!succeeded_ && is_valid() && ref_->connection()) |
+ if (!succeeded_ && ref_ && ref_->connection()) |
return ref_->connection()->OnSqliteError(err, this); |
return err; |
} |