From 9c5f59f10ce08c503affd08e5bd2758995d13faf Mon Sep 17 00:00:00 2001 From: Jan Kaluza Date: Wed, 9 Jan 2013 11:24:40 +0100 Subject: [PATCH] Do not call sqlite3_step again when it returned SQLITE_DONE before --- src/sqlite3backend.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/sqlite3backend.cpp b/src/sqlite3backend.cpp index c3ce5d31..b7e839bb 100644 --- a/src/sqlite3backend.cpp +++ b/src/sqlite3backend.cpp @@ -349,6 +349,7 @@ bool SQLite3Backend::getBuddies(long id, std::list &roster) { std::string key; int ret; + int ret2 = -10; while((ret = sqlite3_step(m_getBuddies)) == SQLITE_ROW) { BuddyInfo b; RESET_GET_COUNTER(m_getBuddies); @@ -366,7 +367,7 @@ bool SQLite3Backend::getBuddies(long id, std::list &roster) { buddy_id = -1; } - while(buddy_id == -1 && (ret = sqlite3_step(m_getBuddiesSettings)) == SQLITE_ROW) { + while(buddy_id == -1 && ret2 != SQLITE_DONE && ret2 != SQLITE_ERROR && (ret2 = sqlite3_step(m_getBuddiesSettings)) == SQLITE_ROW) { RESET_GET_COUNTER(m_getBuddiesSettings); buddy_id = GET_INT(m_getBuddiesSettings); @@ -403,12 +404,24 @@ bool SQLite3Backend::getBuddies(long id, std::list &roster) { roster.push_back(b); } - while((ret = sqlite3_step(m_getBuddiesSettings)) == SQLITE_ROW) { + if (ret != SQLITE_DONE) { + LOG4CXX_ERROR(logger, "getBuddies query "<< (sqlite3_errmsg(m_db) == NULL ? "" : sqlite3_errmsg(m_db))); + return false; } - if (ret != SQLITE_DONE) { - LOG4CXX_ERROR(logger, "getBuddies query"<< (sqlite3_errmsg(m_db) == NULL ? "" : sqlite3_errmsg(m_db))); - return false; + if (ret2 != SQLITE_DONE) { + if (ret2 == SQLITE_ERROR) { + LOG4CXX_ERROR(logger, "getBuddiesSettings query "<< (sqlite3_errmsg(m_db) == NULL ? "" : sqlite3_errmsg(m_db))); + return false; + } + + while((ret2 = sqlite3_step(m_getBuddiesSettings)) == SQLITE_ROW) { + } + + if (ret2 != SQLITE_DONE) { + LOG4CXX_ERROR(logger, "getBuddiesSettings query "<< (sqlite3_errmsg(m_db) == NULL ? "" : sqlite3_errmsg(m_db))); + return false; + } } return true;