Преглед изворни кода

Temporary workaround against the party/guild send_xy_timer dangling pointer crash that is somehow still possible (bugreport:2143).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13169 54d463be-8e91-2dee-dedb-b68131a5f0ec
ultramage пре 16 година
родитељ
комит
42bb5d7927
2 измењених фајлова са 5 додато и 3 уклоњено
  1. 3 2
      src/map/guild.c
  2. 2 1
      src/map/party.c

+ 3 - 2
src/map/guild.c

@@ -370,8 +370,9 @@ int guild_send_xy_timer_sub(DBKey key,void *data,va_list ap)
 	nullpo_retr(0, g);
 
 	for(i=0;i<g->max_member;i++){
-		struct map_session_data *sd;
-		if((sd=g->member[i].sd)!=NULL){
+		//struct map_session_data* sd = g->member[i].sd;
+		struct map_session_data* sd = map_charid2sd(g->member[i].char_id); // temporary crashfix
+		if( sd != NULL ) {
 			if(sd->guild_x!=sd->bl.x || sd->guild_y!=sd->bl.y){
 				clif_guild_xy(sd);
 				sd->guild_x=sd->bl.x;

+ 2 - 1
src/map/party.c

@@ -753,7 +753,8 @@ int party_send_xy_timer(int tid, unsigned int tick, int id, intptr data)
 		// for each member of this party,
 		for( i = 0; i < MAX_PARTY; i++ )
 		{
-			struct map_session_data* sd = p->data[i].sd;
+			//struct map_session_data* sd = p->data[i].sd;
+			struct map_session_data* sd = map_charid2sd(p->party.member[i].char_id); //temporary crashfix
 			if( !sd ) continue;
 
 			if( p->data[i].x != sd->bl.x || p->data[i].y != sd->bl.y )