diff options
-rw-r--r-- | src/FMDatabasePool.m | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/FMDatabasePool.m b/src/FMDatabasePool.m index f515618..b6cc543 100644 --- a/src/FMDatabasePool.m +++ b/src/FMDatabasePool.m @@ -100,11 +100,13 @@ - (FMDatabase*)db { __block FMDatabase *db; - __block BOOL shouldNotifyDelegate = NO; + [self executeLocked:^() { db = [_databaseInPool lastObject]; + BOOL shouldNotifyDelegate = NO; + if (db) { [_databaseOutPool addObject:db]; [_databaseInPool removeLastObject]; @@ -139,8 +141,9 @@ if (![_databaseOutPool containsObject:db]) { [_databaseOutPool addObject:db]; - if ([_delegate respondsToSelector:@selector(databasePool:didAddDatabase:)] && shouldNotifyDelegate) + if (shouldNotifyDelegate && [_delegate respondsToSelector:@selector(databasePool:didAddDatabase:)]) { [_delegate databasePool:self didAddDatabase:db]; + } } } } |