From: Gunnar Beutner Date: Thu, 26 Mar 2015 06:10:52 +0000 (+0100) Subject: Fix assertion failure in IdoMysqlConnection::FieldToEscapedString X-Git-Tag: v2.4.0~773 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a4852dae672c9456bff5dcb1810a87f4dd71a269;p=icinga2 Fix assertion failure in IdoMysqlConnection::FieldToEscapedString fixes #8865 --- 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 ";