]> granicus.if.org Git - icinga2/commitdiff
Fix assertion failure in IdoMysqlConnection::FieldToEscapedString
authorGunnar Beutner <gunnar@beutner.name>
Thu, 26 Mar 2015 06:10:52 +0000 (07:10 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Thu, 26 Mar 2015 06:16:22 +0000 (07:16 +0100)
fixes #8865

lib/db_ido_mysql/idomysqlconnection.cpp

index af32b3db261ae49df27ab621acc5cc7f008e0665..c74d62fa29fc6ce9c391db256f440eca2d82aea5 100644 (file)
@@ -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 ";