Changeset 3619

Show
Ignore:
Timestamp:
03/12/07 22:37:53 (2 years ago)
Author:
timothy
Message:

Fixes a crash reported 3 times today, and 35 times total. http://colloquy.info/admin/crashes.html?q=_refreshIcon&r=crash_thread

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Panels/JVChatRoomMember.m

    r3580 r3619  
    1212- (NSString *) _selfStoredNickname; 
    1313- (NSString *) _selfCompositeName; 
     14- (void) _detach; 
    1415@end 
    1516 
     
    5152 
    5253- (void) dealloc { 
    53         [[NSNotificationCenter defaultCenter] removeObserver:self name:MVChatUserInformationUpdatedNotification object:_user]; 
    54         [[NSNotificationCenter defaultCenter] removeObserver:self name:MVChatUserStatusChangedNotification object:_user]; 
    55         [[NSNotificationCenter defaultCenter] removeObserver:self name:MVChatUserAwayStatusMessageChangedNotification object:_user]; 
    56         [[NSNotificationCenter defaultCenter] removeObserver:self name:MVChatUserIdleTimeUpdatedNotification object:_user]; 
     54        [self _detach]; 
    5755 
    5856        [_user release]; 
     
    758756 
    759757@implementation JVChatRoomMember (JVChatMemberPrivate) 
     758- (void) _detach { 
     759        [[NSNotificationCenter defaultCenter] removeObserver:self name:MVChatUserInformationUpdatedNotification object:_user]; 
     760        [[NSNotificationCenter defaultCenter] removeObserver:self name:MVChatUserStatusChangedNotification object:_user]; 
     761        [[NSNotificationCenter defaultCenter] removeObserver:self name:MVChatUserAwayStatusMessageChangedNotification object:_user]; 
     762        [[NSNotificationCenter defaultCenter] removeObserver:self name:MVChatUserIdleTimeUpdatedNotification object:_user]; 
     763 
     764        _room = nil; 
     765} 
     766 
    760767- (void) _refreshIcon:(NSNotification *) notification { 
    761768        [[_room windowController] reloadListItem:self andChildren:NO]; 
  • trunk/Panels/JVChatRoomPanel.m

    r3610 r3619  
    3535- (NSString *) _selfStoredNickname; 
    3636- (NSString *) _selfCompositeName; 
     37- (void) _detach; 
    3738@end 
    3839 
     
    8889        [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    8990 
     91        [_sortedMembers makeObjectsPerformSelector:@selector( _detach )]; 
     92        [_nextMessageAlertMembers makeObjectsPerformSelector:@selector( _detach )]; 
     93 
    9094        [_sortedMembers release]; 
    9195        [_preferredTabCompleteNicknames release]; 
     
    410414- (void) joined { 
    411415        _banListSynced = NO; 
     416 
     417        [_sortedMembers makeObjectsPerformSelector:@selector( _detach )]; 
    412418        [_sortedMembers removeAllObjects]; 
     419 
    413420        [_preferredTabCompleteNicknames removeAllObjects]; 
     421 
     422        [_nextMessageAlertMembers makeObjectsPerformSelector:@selector( _detach )]; 
    414423        [_nextMessageAlertMembers removeAllObjects]; 
    415424 
     
    10041013        [self performNotification:@"JVChatMemberLeftRoom" withContextInfo:context]; 
    10051014 
     1015        [mbr _detach]; 
     1016 
    10061017        [_preferredTabCompleteNicknames removeObject:[mbr nickname]]; 
    10071018        [_sortedMembers removeObjectIdenticalTo:mbr]; 
     
    10731084                [_windowController showChatViewController:[_windowController activeChatViewController]]; 
    10741085 
     1086        [mbr _detach]; 
     1087 
    10751088        [_preferredTabCompleteNicknames removeObject:[mbr nickname]]; 
    10761089        [_sortedMembers removeObjectIdenticalTo:mbr]; 
     
    11201133        if( [_windowController selectedListItem] == mbr ) 
    11211134                [_windowController showChatViewController:[_windowController activeChatViewController]]; 
     1135 
     1136        [mbr _detach]; 
    11221137 
    11231138        [_preferredTabCompleteNicknames removeObject:[mbr nickname]]; 
     
    14221437                        while( ( member = [enumerator nextObject] ) ) { 
    14231438                                JVChatRoomMember *listItem = [self chatRoomMemberForUser:member]; 
    1424                                 if( listItem ) [_sortedMembers removeObjectIdenticalTo:listItem]; 
     1439                                if( listItem ) { 
     1440                                        [listItem _detach]; 
     1441                                        [_sortedMembers removeObjectIdenticalTo:listItem]; 
     1442                                } 
    14251443                        } 
    14261444                }