Thread: Natedog...
View Single Post
  #11  
Old 05-30-2015, 01:10 PM
rencro
Hill Giant
 
Join Date: Sep 2008
Location: So. California
Posts: 219
Default

Still crashes on last bot members death.

Ex: Me and my single bot in a 2 person group, bot dies, CRASH.

Group's memory has already been deleted in this case once coming back from:

Code:
// delete from group data
					RemoveBotFromGroup(this, g);
So when this gets processed:

Code:
					// if group members exist below this one, move
					// them all up one slot in the group list
					int j = i+1;
					for(; j<MAX_GROUP_MEMBERS; j++) {
						if(g->members[j]) {
							g->members[j-1] = g->members[j];
							strcpy(g->membername[j-1], g->members[j]->GetCleanName());
							g->membername[j][0] = '\0';
							memset(g->membername[j], 0, 64);
							g->members[j] = nullptr;
						}
					}
It crashes, as I mentioned, that memory is gone.

Looks like it just needed your change moved up in the code: as in

Code:
diff --git a/zone/bot.cpp b/zone/bot.cpp
index ebc5f47..f382272 100644
--- a/zone/bot.cpp
+++ b/zone/bot.cpp
@@ -5897,6 +5897,11 @@ bool Bot::Death(Mob *killerMob, int32 damage, uint16 spell_id, SkillUseTypes att
 					// delete from group data
 					RemoveBotFromGroup(this, g);
 
+					//Make sure group still exists if it doesnt they were already updated in RemoveBotFromGroup
+					g = GetGroup();
+					if (!g)
+						break;
+
 					// if group members exist below this one, move
 					// them all up one slot in the group list
 					int j = i+1;
@@ -5910,11 +5915,6 @@ bool Bot::Death(Mob *killerMob, int32 damage, uint16 spell_id, SkillUseTypes att
 						}
 					}
 					
-					//Make sure group still exists if it doesnt they were already updated in RemoveBotFromGroup
-					g = GetGroup();
-					if (!g)
-						break;
-					
 					// update the client group
 					EQApplicationPacket* outapp = new EQApplicationPacket(OP_GroupUpdate, sizeof(GroupJoin_Struct));
 					GroupJoin_Struct* gu = (GroupJoin_Struct*)outapp->pBuffer;
And then I dont crash in this situation.

Thanks..
Reply With Quote