Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/fmdb/FMDatabase.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ typedef int(^FMDBExecuteStatementsCallbackBlock)(NSDictionary *resultsDictionary
NSTimeInterval _startBusyRetryTime;

NSMutableDictionary *_cachedStatements;
NSMutableSet *_openResultSets;
NSHashTable *_openResultSets;
NSMutableSet *_openFunctions;

NSDateFormatter *_dateFormat;
Expand Down
19 changes: 5 additions & 14 deletions src/fmdb/FMDatabase.m
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ - (instancetype)initWithPath:(NSString*)aPath {

if (self) {
_databasePath = [aPath copy];
_openResultSets = [[NSMutableSet alloc] init];
_openResultSets = [NSHashTable weakObjectsHashTable];
_db = nil;
_logsErrors = YES;
_crashOnErrors = NO;
Expand Down Expand Up @@ -283,23 +283,15 @@ - (BOOL)hasOpenResultSets {
- (void)closeOpenResultSets {

//Copy the set so we don't get mutation errors
NSSet *openSetCopy = FMDBReturnAutoreleased([_openResultSets copy]);
for (NSValue *rsInWrappedInATastyValueMeal in openSetCopy) {
FMResultSet *rs = (FMResultSet *)[rsInWrappedInATastyValueMeal pointerValue];

NSHashTable *openSetCopy = FMDBReturnAutoreleased([_openResultSets copy]);
for (FMResultSet *rs in openSetCopy) {
[rs setParentDB:nil];
[rs close];

[_openResultSets removeObject:rsInWrappedInATastyValueMeal];
[_openResultSets removeObject:rs];
}
}

- (void)resultSetDidClose:(FMResultSet *)resultSet {
NSValue *setValue = [NSValue valueWithNonretainedObject:resultSet];

[_openResultSets removeObject:setValue];
}

#pragma mark Cached statements

- (void)clearCachedStatements {
Expand Down Expand Up @@ -858,8 +850,7 @@ - (FMResultSet *)executeQuery:(NSString *)sql withArgumentsInArray:(NSArray*)arr
rs = [FMResultSet resultSetWithStatement:statement usingParentDatabase:self];
[rs setQuery:sql];

NSValue *openResultSet = [NSValue valueWithNonretainedObject:rs];
[_openResultSets addObject:openResultSet];
[_openResultSets addObject:rs];

[statement setUseCount:[statement useCount] + 1];

Expand Down
9 changes: 0 additions & 9 deletions src/fmdb/FMResultSet.m
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@
#import "FMDatabase.h"
#import "unistd.h"

@interface FMDatabase ()
- (void)resultSetDidClose:(FMResultSet *)resultSet;
@end


@implementation FMResultSet
@synthesize query=_query;
@synthesize statement=_statement;
Expand Down Expand Up @@ -47,10 +42,6 @@ - (void)close {
[_statement reset];
FMDBRelease(_statement);
_statement = nil;

// we don't need this anymore... (i think)
//[_parentDB setInUse:NO];
[_parentDB resultSetDidClose:self];
_parentDB = nil;
}

Expand Down