adium 4185:fbe133f05ad9: Date update. Thanks, Peter

commits at adium.im commits at adium.im
Mon Aug 29 02:07:27 UTC 2011


details:	http://hg.adium.im/adium/rev/fbe133f05ad9
revision:	4185:fbe133f05ad9
branch:		(none)
author:		Evan Schoenberg
date:		Sun Aug 28 19:41:38 2011 -0500

Date update. Thanks, Peter
Subject: adium 4186:333c3a8b9b13: I have a theory that this may be the solution to the remaining AIProxyListObject crash issue; if the userlist is hidden, as it is by default in the Twitter timeline, then items in the list could previously deallocate without us calling reloadData.  The list might try to access its data even if it's not visible if it's is calculating frame heights - and all the recent crashes are in:

details:	http://hg.adium.im/adium/rev/333c3a8b9b13
revision:	4186:333c3a8b9b13
branch:		(none)
author:		Evan Schoenberg
date:		Sun Aug 28 21:07:02 2011 -0500

I have a theory that this may be the solution to the remaining AIProxyListObject crash issue; if the userlist is hidden, as it is by default in the Twitter timeline, then items in the list could previously deallocate without us calling reloadData.  The list might try to access its data even if it's not visible if it's is calculating frame heights - and all the recent crashes are in:
{{{
com.apple.AppKit              	0x9185c751 -[NSTableView _minimumFrameSize] + 72
com.apple.AppKit              	0x91866cfc -[NSTableView tile] + 252
com.apple.AppKit              	0x9189dd4e -[NSTableView viewWillDraw] + 75
com.apple.AppKit              	0x9189d862 -[NSView viewWillDraw] + 621
}}}

Refs #14294. Please report if you can reproduce the crash after this commit.

diffs (35 lines):

diff -r 2fb1b4da6e87 -r 333c3a8b9b13 Frameworks/Adium Framework/Source/AIProxyListObject.m
--- a/Frameworks/Adium Framework/Source/AIProxyListObject.m	Sun Aug 28 19:17:33 2011 -0500
+++ b/Frameworks/Adium Framework/Source/AIProxyListObject.m	Sun Aug 28 21:07:02 2011 -0500
@@ -60,7 +60,7 @@
 	proxy = [proxyDict objectForKey:key];
 
 	if (proxy && proxy.listObject != inListObject) {
-        /* This is a memory management failure; AIContactController stopped tracking a list object, but it never deallocated. -evands 8/7/11 */
+        /* This is a memory management failure; AIContactController stopped tracking a list object, but it never deallocated. -evands 8/28/11 */
 		AILogWithSignature(@"%@ was leaked! Meh.", proxy.listObject);
 
 		proxy.listObject = inListObject;
diff -r 2fb1b4da6e87 -r 333c3a8b9b13 Plugins/Dual Window Interface/AIMessageViewController.m
--- a/Plugins/Dual Window Interface/AIMessageViewController.m	Sun Aug 28 19:17:33 2011 -0500
+++ b/Plugins/Dual Window Interface/AIMessageViewController.m	Sun Aug 28 21:07:02 2011 -0500
@@ -1181,15 +1181,12 @@
  */
 - (void)chatParticipatingListObjectsChanged:(NSNotification *)notification
 {
-    //Update the user list
-	AILogWithSignature(@"%i, so %@ %@",[self userListVisible], ([self userListVisible] ? @"reloading" : @"not reloading"),
-					   userListController);
-	
 	[chat resortParticipants];
-	
+
+	/* Even if we're not viewing the user list, we can't risk it keeping stale information about potentially released objects */
+	[userListController reloadData];
+
     if ([self userListVisible]) {
-        [userListController reloadData];
-		
 		[self updateUserCount];
     }
 }




More information about the commits mailing list