From: Joseph Spiros Date: Fri, 19 Sep 2008 22:39:26 +0000 (+0000) Subject: Adding rudimentary locking to ITSQLite3Database to kill errors. X-Git-Url: http://git.ithinksw.org/ITFoundation.git/commitdiff_plain/85f624bb2febde8e3399a53dc9b28e003e370ac0?hp=ecf80bca64f1e1a0c83ec0b90f370f41db477024 Adding rudimentary locking to ITSQLite3Database to kill errors. --- diff --git a/ITSQLite3Database.h b/ITSQLite3Database.h index a8b93b0..803c49d 100644 --- a/ITSQLite3Database.h +++ b/ITSQLite3Database.h @@ -18,6 +18,7 @@ extern id sqlite3_column_objc_object(sqlite3_stmt *statement, int columnIndex); @interface ITSQLite3Database : NSObject { NSString *dbPath; sqlite3 *db; + NSRecursiveLock *dbLock; } - (id)initWithPath:(NSString *)path; diff --git a/ITSQLite3Database.m b/ITSQLite3Database.m index 1984e6d..9de25de 100644 --- a/ITSQLite3Database.m +++ b/ITSQLite3Database.m @@ -65,11 +65,13 @@ id sqlite3_column_objc_object(sqlite3_stmt *statement, int columnIndex) { [self release]; return nil; } + dbLock = [[NSRecursiveLock alloc] init]; } return self; } - (void)dealloc { + [dbLock release]; if (sqlite3_close(db) != SQLITE_OK) { ITDebugLog(@"%@ sqlite3_close(0x%x): %@", ITDebugErrorPrefixForObject(self), db, [NSString stringWithUTF8String:sqlite3_errmsg(db)]); } @@ -136,7 +138,9 @@ id sqlite3_column_objc_object(sqlite3_stmt *statement, int columnIndex) { va_list args; va_start(args, query); + [dbLock lock]; BOOL result = [self executeQuery:query va_args:args]; + [dbLock unlock]; va_end(args); return result; @@ -154,7 +158,9 @@ id sqlite3_column_objc_object(sqlite3_stmt *statement, int columnIndex) { va_list args; va_start(args, query); + [dbLock lock]; id result = [self fetchRow:query va_args:args]; + [dbLock unlock]; va_end(args); return result; @@ -206,7 +212,9 @@ id sqlite3_column_objc_object(sqlite3_stmt *statement, int columnIndex) { va_list args; va_start(args, query); + [dbLock lock]; id result = [self fetchTable:query va_args:args]; + [dbLock unlock]; va_end(args); return result;