diff options
author | rowanbeentje <rowan@beent.je> | 2010-03-16 02:04:50 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2010-03-16 02:04:50 +0000 |
commit | 332f6201ce607a6622fadfd3e6426e4571dc035f (patch) | |
tree | 4e86f4ac81a9b13487482a8ec95dd2dc273f71d3 /Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m | |
parent | 1bfe991970009b1e7011823a00e676271fc04055 (diff) | |
download | sequelpro-332f6201ce607a6622fadfd3e6426e4571dc035f.tar.gz sequelpro-332f6201ce607a6622fadfd3e6426e4571dc035f.tar.bz2 sequelpro-332f6201ce607a6622fadfd3e6426e4571dc035f.zip |
- Make a number of changes to attempt to improve disconnection/quit crashes: prevent multiple disconnects, add more checks, cancel current queries, and add a tiny delay to allow mysql cleanup.
- Alter MCPStreamingResult to no longer return a retained instance, setting up correct result disposal on autorelease but changing callers to retain as soon as they receive.
- Review and change a number of local variables shadowing/shielding other local or global variables.
Diffstat (limited to 'Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m')
-rw-r--r-- | Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m b/Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m index 624f132c..fd7d181b 100644 --- a/Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m +++ b/Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m @@ -95,6 +95,10 @@ mNumOfFields = 0; } + // Obtain SEL references and pointer + isConnectedSEL = @selector(isConnected); + isConnectedPtr = [parentConnection methodForSelector:isConnectedSEL]; + // If the result is opened in download-data-fast safe mode, set up the additional variables // and threads required. if (!fullyStreaming) { @@ -127,6 +131,7 @@ */ - (void) dealloc { + [self cancelResultLoad]; if (!connectionUnlocked) [parentConnection unlockConnection]; if (!fullyStreaming) { @@ -406,7 +411,7 @@ size_t sizeOfDataLengths = (size_t)(sizeof(unsigned long) * mNumOfFields); // Loop through the rows until the end of the data is reached - indicated via a NULL - while (theRow = mysql_fetch_row(mResult)) { + while ( (BOOL)(*isConnectedPtr)(parentConnection, isConnectedSEL) && (theRow = mysql_fetch_row(mResult))) { // Retrieve the lengths of the returned data fieldLengths = mysql_fetch_lengths(mResult); |