Prechádzať zdrojové kódy

Added a check on the battle_delay_damage_sub to prevent crashes from map_freeblock_lock/unlock issues and the pointer becoming dereferenced. Original fix suggested by WildCard and it has proven to resolve issues on a larger scale server. bugreport:6123

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16476 54d463be-8e91-2dee-dedb-b68131a5f0ec
cookiecrumbs 13 rokov pred
rodič
commit
1a4c429b2d
1 zmenil súbory, kde vykonal 1 pridanie a 1 odobranie
  1. 1 1
      src/map/battle.c

+ 1 - 1
src/map/battle.c

@@ -200,7 +200,7 @@ int battle_delay_damage_sub(int tid, unsigned int tick, int id, intptr_t data)
 {
 	struct delay_damage *dat = (struct delay_damage *)data;
 
-	if ( dat && dat->target && dat->target->prev != NULL && !status_isdead(dat->target) ) {
+	if ( dat && dat->target && map_id2bl(id) == dat->src && dat->target->prev != NULL && !status_isdead(dat->target) ) {
 		if( dat->src && dat->src->prev != NULL && id == dat->src->id &&
 			dat->target->m == dat->src->m &&
 			(dat->target->type != BL_PC || ((TBL_PC*)dat->target)->invincible_timer == INVALID_TIMER) &&