Guest User

Untitled

a guest
Apr 12th, 2010
418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.10 KB | None | 0 0
  1. commit f791a2fa3e1424643262fa084000efdf2bb8d4eb
  2. Author: balrok <[email protected]>
  3. Date: Sat Mar 27 18:17:59 2010 +0100
  4.  
  5. [8725] Fixed bug with crash at forced logout in combat in instance.
  6.  
  7. In fact this old bug that just has been triggred more often after recent code changes,
  8. so with some chance maybe some other logout related crashes fixed.
  9.  
  10. Also small cleanup in avoid double calls RemoveFromWorld and CleanupsBeforeDelete in some cases.
  11.  
  12. Conflicts:
  13.  
  14. src/game/Map.cpp
  15. src/shared/revision_nr.h
  16.  
  17. ich hab die conflicts in der map.cpp garnicht erst grosz beachtet sondern gleich die map.cpp von origin/master als vorbild genommen
  18. das entspricht dann etwa:
  19. [8739] Call cleaniup code at remove player from Map before Map unlinking.
  20.  
  21. This fix crash when aura remove triggering spell casting.
  22.  
  23. diff --git a/src/game/Map.cpp b/src/game/Map.cpp
  24. index 9099876..2c190ca 100644
  25. --- a/src/game/Map.cpp
  26. +++ b/src/game/Map.cpp
  27. @@ -711,6 +711,11 @@ void Map::Update(const uint32 &t_diff)
  28.  
  29. void Map::Remove(Player *player, bool remove)
  30. {
  31. + if(remove)
  32. + player->CleanupsBeforeDelete();
  33. + else
  34. + player->RemoveFromWorld();
  35. +
  36. // this may be called during Map::Update
  37. // after decrement+unlink, ++m_mapRefIter will continue correctly
  38. // when the first element of the list is being removed
  39. @@ -723,7 +728,7 @@ void Map::Remove(Player *player, bool remove)
  40. if(p.x_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP || p.y_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP)
  41. {
  42. // invalid coordinates
  43. - player->RemoveFromWorld();
  44. + //player->ResetMap();
  45.  
  46. if( remove )
  47. DeleteFromWorld(player);
  48. @@ -743,13 +748,13 @@ void Map::Remove(Player *player, bool remove)
  49. NGridType *grid = getNGrid(cell.GridX(), cell.GridY());
  50. assert(grid != NULL);
  51.  
  52. - player->RemoveFromWorld();
  53. RemoveFromGrid(player,grid,cell);
  54.  
  55. SendRemoveTransports(player);
  56.  
  57. UpdateObjectsVisibilityFor(player,cell,p);
  58.  
  59. + //player->ResetMap();
  60. if( remove )
  61. DeleteFromWorld(player);
  62. }
  63. @@ -789,7 +794,11 @@ Map::Remove(T *obj, bool remove)
  64. if(obj->isActiveObject())
  65. RemoveFromActive(obj);
  66.  
  67. - obj->RemoveFromWorld();
  68. + if(remove)
  69. + obj->CleanupsBeforeDelete();
  70. + else
  71. + obj->RemoveFromWorld();
  72. +
  73. RemoveFromGrid(obj,grid,cell);
  74.  
  75. UpdateObjectVisibility(obj,cell,p);
  76. @@ -1983,9 +1992,6 @@ void Map::RemoveAllObjectsInRemoveList()
  77. Remove((GameObject*)obj,true);
  78. break;
  79. case TYPEID_UNIT:
  80. - // in case triggered sequence some spell can continue casting after prev CleanupsBeforeDelete call
  81. - // make sure that like sources auras/etc removed before destructor start
  82. - ((Creature*)obj)->CleanupsBeforeDelete ();
  83. Remove((Creature*)obj,true);
  84. break;
  85. default:
  86. @@ -3280,8 +3286,6 @@ void Map::SendObjectUpdates()
  87. {
  88. Object* obj = *i_objectsToClientUpdate.begin();
  89. i_objectsToClientUpdate.erase(i_objectsToClientUpdate.begin());
  90. - if (!obj)
  91. - continue;
  92. obj->BuildUpdateData(update_players);
  93. }
  94.  
  95. diff --git a/src/game/Player.cpp b/src/game/Player.cpp
  96. index 9e10e51..0851c1b 100644
  97. --- a/src/game/Player.cpp
  98. +++ b/src/game/Player.cpp
  99. @@ -1750,11 +1750,12 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati
  100. }
  101. GetSession()->SendPacket( &data );
  102. SendSavedInstances();
  103. -
  104. - // remove from old map now
  105. - if(oldmap) oldmap->Remove(this, false);
  106. }
  107.  
  108. + // remove from old map now
  109. + if(oldmap)
  110. + oldmap->Remove(this, false);
  111. +
  112. // new final coordinates
  113. float final_x = x;
  114. float final_y = y;
  115. commit d9033399fc7c14f64bd657c3d170271d92557361
  116. Author: balrok <[email protected]>
  117. Date: Mon Apr 5 00:10:03 2010 +0200
  118.  
  119. [8729] Fix crash added in [8725]. Sorry.
  120.  
  121. Conflicts:
  122.  
  123. src/shared/revision_nr.h
  124.  
  125. diff --git a/src/game/Object.cpp b/src/game/Object.cpp
  126. index 64b59fe..daf228f 100644
  127. --- a/src/game/Object.cpp
  128. +++ b/src/game/Object.cpp
  129. @@ -1069,6 +1069,7 @@ WorldObject::WorldObject()
  130.  
  131. void WorldObject::CleanupsBeforeDelete()
  132. {
  133. + RemoveFromWorld();
  134. }
  135.  
  136. void WorldObject::_Create( uint32 guidlow, HighGuid guidhigh, uint32 mapid )
  137. diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
  138. index 352ecf4..8360d5e 100644
  139. --- a/src/game/Unit.cpp
  140. +++ b/src/game/Unit.cpp
  141. @@ -12010,7 +12010,7 @@ void Unit::CleanupsBeforeDelete()
  142. RemoveAllAuras(AURA_REMOVE_BY_DELETE);
  143. GetMotionMaster()->Clear(false); // remove different non-standard movement generators.
  144. }
  145. - RemoveFromWorld();
  146. + WorldObject::CleanupsBeforeDelete();
  147. }
  148.  
  149. CharmInfo* Unit::InitCharmInfo(Unit *charm)
  150. commit a5984ec2faa95b956b7cdb89614772fdfa220677
  151. Author: balrok <[email protected]>
  152. Date: Wed Apr 7 15:05:29 2010 +0200
  153.  
  154. noch ein crashfix fuer 8725
  155.  
  156. eigtl muesste a2d396eb0bb195efc460944dd4e0fab2a858b300 noch gebackported werden dafuer
  157.  
  158. diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp
  159. index 3ed2630..e9598cd 100644
  160. --- a/src/game/GameObject.cpp
  161. +++ b/src/game/GameObject.cpp
  162. @@ -92,6 +92,7 @@ void GameObject::CleanupsBeforeDelete()
  163. }
  164. }
  165. }
  166. + Object::CleanupsBeforeDelete();
  167. }
  168.  
  169. void GameObject::AddToWorld()
  170. commit 0ae48a5b51f020307eb9c4272341b00f8bfc202b
  171. Author: balrok <[email protected]>
  172. Date: Wed Apr 7 15:13:27 2010 +0200
  173.  
  174. crashfix fix
  175.  
  176. diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp
  177. index e9598cd..1479aec 100644
  178. --- a/src/game/GameObject.cpp
  179. +++ b/src/game/GameObject.cpp
  180. @@ -92,7 +92,7 @@ void GameObject::CleanupsBeforeDelete()
  181. }
  182. }
  183. }
  184. - Object::CleanupsBeforeDelete();
  185. + WorldObject::CleanupsBeforeDelete();
  186. }
  187.  
  188. void GameObject::AddToWorld()
Advertisement
Add Comment
Please, Sign In to add comment