Skip to content

Commit 6ba6f08

Browse files
committed
Merge pull request #109 from abachman/master
FCModel openDatabaseAtPath:withSchemaBuilder: blocks on OS X
2 parents c2d380a + 9090713 commit 6ba6f08

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

FCModel/FCModelDatabaseQueue.m

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,11 @@ - (void)dealloc
104104

105105
// Read change counter from SQLite file header to detect changes made by other processes during this write
106106
uint32_t changeCounterBeforeBlock = 0;
107-
lseek(changeCounterReadFileDescriptor, kSQLiteFileChangeCounterOffset, SEEK_SET);
108-
read(changeCounterReadFileDescriptor, &changeCounterBeforeBlock, sizeof(uint32_t));
109-
changeCounterBeforeBlock = CFSwapInt32BigToHost(changeCounterBeforeBlock);
107+
if (changeCounterReadFileDescriptor > 0) {
108+
lseek(changeCounterReadFileDescriptor, kSQLiteFileChangeCounterOffset, SEEK_SET);
109+
read(changeCounterReadFileDescriptor, &changeCounterBeforeBlock, sizeof(uint32_t));
110+
changeCounterBeforeBlock = CFSwapInt32BigToHost(changeCounterBeforeBlock);
111+
}
110112

111113
block(db);
112114

@@ -115,9 +117,11 @@ - (void)dealloc
115117

116118
// if more than 1 change during this expected write, either there's 2 queries in it (unexpected) or another process changed it
117119
uint32_t changeCounterAfterBlock = 0;
118-
lseek(changeCounterReadFileDescriptor, kSQLiteFileChangeCounterOffset, SEEK_SET);
119-
read(changeCounterReadFileDescriptor, &changeCounterAfterBlock, sizeof(uint32_t));
120-
changeCounterAfterBlock = CFSwapInt32BigToHost(changeCounterAfterBlock);
120+
if (changeCounterReadFileDescriptor > 0) {
121+
lseek(changeCounterReadFileDescriptor, kSQLiteFileChangeCounterOffset, SEEK_SET);
122+
read(changeCounterReadFileDescriptor, &changeCounterAfterBlock, sizeof(uint32_t));
123+
changeCounterAfterBlock = CFSwapInt32BigToHost(changeCounterAfterBlock);
124+
}
121125

122126
if (changeCounterAfterBlock - changeCounterBeforeBlock > 1) [FCModel dataWasUpdatedExternally];
123127
});

0 commit comments

Comments
 (0)