@@ -558,6 +558,27 @@ static int note_peer_active(Group_Chats *g_c, uint32_t groupnumber, uint16_t pee
558
558
559
559
static int delpeer (Group_Chats * g_c , uint32_t groupnumber , int peer_index , void * userdata , bool keep_connection );
560
560
561
+ static void delete_any_peer_with_pk (Group_Chats * g_c , uint32_t groupnumber , const uint8_t * real_pk , void * userdata )
562
+ {
563
+ Group_c * g = get_group_c (g_c , groupnumber );
564
+
565
+ if (!g ) {
566
+ return ;
567
+ }
568
+
569
+ int prev_peer_index = peer_in_chat (g , real_pk );
570
+
571
+ if (prev_peer_index >= 0 ) {
572
+ delpeer (g_c , groupnumber , prev_peer_index , userdata , false);
573
+ }
574
+
575
+ int prev_frozen_index = frozen_in_chat (g , real_pk );
576
+
577
+ if (prev_frozen_index >= 0 ) {
578
+ delete_frozen (g , prev_frozen_index );
579
+ }
580
+ }
581
+
561
582
/* Add a peer to the group chat, or update an existing peer.
562
583
*
563
584
* fresh indicates whether we should consider this information on the peer to
@@ -610,17 +631,7 @@ static int addpeer(Group_Chats *g_c, uint32_t groupnumber, const uint8_t *real_p
610
631
}
611
632
}
612
633
613
- int prev_peer_index = peer_in_chat (g , real_pk );
614
-
615
- if (prev_peer_index >= 0 ) {
616
- delpeer (g_c , groupnumber , prev_peer_index , userdata , false);
617
- }
618
-
619
- int prev_frozen_index = frozen_in_chat (g , real_pk );
620
-
621
- if (prev_frozen_index >= 0 ) {
622
- delete_frozen (g , prev_frozen_index );
623
- }
634
+ delete_any_peer_with_pk (g_c , groupnumber , real_pk , userdata );
624
635
625
636
Group_Peer * temp = (Group_Peer * )realloc (g -> group , sizeof (Group_Peer ) * (g -> numpeers + 1 ));
626
637
0 commit comments