From a4852dae672c9456bff5dcb1810a87f4dd71a269 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Thu, 26 Mar 2015 07:10:52 +0100 Subject: [PATCH] Fix assertion failure in IdoMysqlConnection::FieldToEscapedString fixes #8865 --- lib/db_ido_mysql/idomysqlconnection.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/db_ido_mysql/idomysqlconnection.cpp b/lib/db_ido_mysql/idomysqlconnection.cpp index af32b3db2..c74d62fa2 100644 --- a/lib/db_ido_mysql/idomysqlconnection.cpp +++ b/lib/db_ido_mysql/idomysqlconnection.cpp @@ -683,7 +683,8 @@ bool IdoMysqlConnection::FieldToEscapedString(const String& key, const Value& va if (DbValue::IsObjectInsertID(value)) { dbrefcol = GetInsertID(dbobjcol); - ASSERT(dbrefcol.IsValid()); + if (!dbrefcol.IsValid()) + return false; } else { dbrefcol = GetObjectID(dbobjcol); @@ -750,8 +751,10 @@ void IdoMysqlConnection::InternalExecuteQuery(const DbQuery& query, DbQueryType bool first = true; BOOST_FOREACH(const Dictionary::Pair& kv, query.WhereCriteria) { - if (!FieldToEscapedString(kv.first, kv.second, &value)) + if (!FieldToEscapedString(kv.first, kv.second, &value)) { + m_QueryQueue.Enqueue(boost::bind(&IdoMysqlConnection::InternalExecuteQuery, this, query, (DbQueryType *)NULL)); return; + } if (!first) where << " AND "; -- 2.40.0