Increased comment detail
authorEvan Schoenberg
Sun, 28 Aug 2011 21:08:25 -0500
changeset 3631 6faa02098034
parent 3630 a331644b1ed4
child 3632 1a4f7278fd3c
Increased comment detail
(transplanted from 03b0a921bb0fbc182577093fb9ec529af2d9b86d)
Frameworks/Adium Framework/Source/AIProxyListObject.m
--- a/Frameworks/Adium Framework/Source/AIProxyListObject.m	Sun Aug 28 21:07:02 2011 -0500
+++ b/Frameworks/Adium Framework/Source/AIProxyListObject.m	Sun Aug 28 21:08:25 2011 -0500
@@ -48,7 +48,12 @@
 	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 generally a memory management failure; AIContactController stopped tracking a list object, but it never deallocated and
+		 * so never called [AIProxyListObject releaseProxyObject:].
+		 *
+		 * I've seen one case where proxy.listObject referred to a zombie object. I can't reproduce. If that happens, we'll get a crash here in
+		 * debug mode only.  -evands 8/28/11
+		 */
 		AILogWithSignature(@"%@ was leaked! Meh.", proxy.listObject);
 
 		proxy.listObject = inListObject;
@@ -61,7 +66,6 @@
 		proxy.containingObject = inContainingObject;
 		proxy.key = key;
 		[inListObject noteProxyObject:proxy];
-
 		[proxyDict setObject:proxy
 					  forKey:key];
 		[proxy release];
@@ -77,6 +81,7 @@
  */
 + (void)releaseProxyObject:(AIProxyListObject *)proxyObject
 {
+	AILogWithSignature(@"%@", proxyObject);
 	[[proxyObject retain] autorelease];
 	proxyObject.listObject = nil;
 	[proxyDict removeObjectForKey:proxyObject.key];