diff --git a/CommonLibs/sqlite3util.cpp b/CommonLibs/sqlite3util.cpp index b898445..036ef2c 100644 --- a/CommonLibs/sqlite3util.cpp +++ b/CommonLibs/sqlite3util.cpp @@ -1,6 +1,6 @@ /* -* Written by David A. Burgess, Kestrel Signal Processing, Inc., 2010 -* The author disclaims copyright to this source code. +* Copyright 2010 Kestrel Signal Processing, Inc. +* All rights reserved. */ @@ -17,12 +17,18 @@ int sqlite3_prepare_statement(sqlite3* DB, sqlite3_stmt **stmt, const char* query) { - int prc = sqlite3_prepare_v2(DB,query,strlen(query),stmt,NULL); - if (prc) { - fprintf(stderr,"sqlite3_prepare_v2 failed for \"%s\": %s\n",query,sqlite3_errmsg(DB)); - sqlite3_finalize(*stmt); - } - return prc; + int src = SQLITE_BUSY; + while (src==SQLITE_BUSY) { + src = sqlite3_prepare_v2(DB,query,strlen(query),stmt,NULL); + if (src==SQLITE_BUSY) { + usleep(100000); + } + } + if (src) { + fprintf(stderr,"sqlite3_prepare_v2 failed for \"%s\": %s\n",query,sqlite3_errmsg(DB)); + sqlite3_finalize(*stmt); + } + return src; } int sqlite3_run_query(sqlite3* DB, sqlite3_stmt *stmt) @@ -140,6 +146,7 @@ bool sqlite3_command(sqlite3* DB, const char* query) if (sqlite3_prepare_statement(DB,&stmt,query)) return false; // Run the query. int src = sqlite3_run_query(DB,stmt); + sqlite3_finalize(stmt); return src==SQLITE_DONE; } diff --git a/SIP/SIPEngine.cpp b/SIP/SIPEngine.cpp index 50312fb..e35fe8c 100644 --- a/SIP/SIPEngine.cpp +++ b/SIP/SIPEngine.cpp @@ -114,7 +114,7 @@ ostream& SIP::operator<<(ostream& os, SIPState s) { const char* str = SIPStateString(s); if (str) os << str; - else os << "?" << s << "?"; + else os << "?" << ((int)s) << "?"; return os; }