aboutsummaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2011-02-15 01:24:56 +0000
committerrowanbeentje <rowan@beent.je>2011-02-15 01:24:56 +0000
commit6aa6d20436a1e920151d86c086c64466173aa130 (patch)
treecddc1ae9176880737ffd4ef2d34dbd9cc14080ef /Source
parentafad99c5e049e30cbe1ac3e9c4dfce7de28501a1 (diff)
downloadsequelpro-6aa6d20436a1e920151d86c086c64466173aa130.tar.gz
sequelpro-6aa6d20436a1e920151d86c086c64466173aa130.tar.bz2
sequelpro-6aa6d20436a1e920151d86c086c64466173aa130.zip
- When loading tables, ensure that the column count is updated before table timers are set up. This prevents accesses of SPTableStorages while column change realloc/dealloc processes are still running, fixing exceptions on large tables
Diffstat (limited to 'Source')
-rw-r--r--Source/SPCustomQuery.m7
-rw-r--r--Source/SPTableContent.m7
2 files changed, 8 insertions, 6 deletions
diff --git a/Source/SPCustomQuery.m b/Source/SPCustomQuery.m
index b2859010..c43df1cd 100644
--- a/Source/SPCustomQuery.m
+++ b/Source/SPCustomQuery.m
@@ -882,12 +882,13 @@
[resultData removeAllRows];
pthread_mutex_unlock(&resultDataLock);
+ // Set the column count on the data store before setting up anything else -
+ // ensures that SPDataStorage is set up for timer-driven data loads
+ [resultData setColumnCount:[theResult numOfFields]];
+
// Set up the table updates timer
[[self onMainThread] initQueryLoadTimer];
- // Set the column count on the data store
- [resultData setColumnCount:[theResult numOfFields]];
-
// Set up an autorelease pool for row processing
dataLoadingPool = [[NSAutoreleasePool alloc] init];
diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m
index a513ea15..a0b184dd 100644
--- a/Source/SPTableContent.m
+++ b/Source/SPTableContent.m
@@ -805,12 +805,13 @@
BOOL *columnBlobStatuses = malloc(dataColumnsCount * sizeof(BOOL));
tableLoadTargetRowCount = targetRowCount;
+ // Set the column count on the data store before setting up anything else -
+ // ensures that SPDataStorage is set up for timer-driven data loads
+ [tableValues setColumnCount:dataColumnsCount];
+
// Set up the table updates timer
[[self onMainThread] initTableLoadTimer];
- // Set the column count on the data store
- [tableValues setColumnCount:dataColumnsCount];
-
NSAutoreleasePool *dataLoadingPool;
NSProgressIndicator *dataLoadingIndicator = [tableDocumentInstance valueForKey:@"queryProgressBar"];
BOOL prefsLoadBlobsAsNeeded = [prefs boolForKey:SPLoadBlobsAsNeeded];