Skip to content

Commit

Permalink
Merge pull request #1427 from ychin/fix-nsconnection-shutdown-issues
Browse files Browse the repository at this point in the history
Fix Vim crashing when querying serverlist when quitting
  • Loading branch information
ychin authored Sep 9, 2023
2 parents 7b8a803 + f4e6078 commit 95366b5
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions src/MacVim/MMBackend.m
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@ - (void)dealloc
[outputQueue release]; outputQueue = nil;
[drawData release]; drawData = nil;
[connection release]; connection = nil;
[appProxy release]; appProxy = nil;
[actionDict release]; actionDict = nil;
[sysColorDict release]; sysColorDict = nil;
[colorDict release]; colorDict = nil;
Expand Down Expand Up @@ -1746,11 +1747,11 @@ - (NSArray *)serverList
{
NSArray *list = nil;

if ([self connection]) {
id proxy = [connection rootProxy];
[proxy setProtocolForProxy:@protocol(MMAppProtocol)];

if ([self connection] && [connection isValid]) {
@try {
id proxy = [connection rootProxy];
[proxy setProtocolForProxy:@protocol(MMAppProtocol)];

list = [proxy serverList];
}
@catch (NSException *ex) {
Expand Down Expand Up @@ -2535,6 +2536,14 @@ - (void)connectionDidDie:(NSNotification * UNUSED)notification

ASLogNotice(@"Main connection was lost before process had a chance "
"to terminate; preserving swap files.");

// Just release the connection, in case some autocmd's end up triggering
// IPC calls during shutdown. If other code use isValid checks this is a
// little unnecessary, but it just helps prevent issues with code that use
// the connection or proxy without checking for validity first.
[connection release]; connection = nil;
[appProxy release]; appProxy = nil;

getout_preserve_modified(1);
}

Expand Down

0 comments on commit 95366b5

Please sign in to comment.