From 85f624bb2febde8e3399a53dc9b28e003e370ac0 Mon Sep 17 00:00:00 2001 From: Joseph Spiros Date: Fri, 19 Sep 2008 22:39:26 +0000 Subject: [PATCH] Adding rudimentary locking to ITSQLite3Database to kill errors. --- ITSQLite3Database.h | 1 + ITSQLite3Database.m | 8 ++++++++ 2 files changed, 9 insertions(+) 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; -- 2.20.1