0ad/source/simulation2
wraitii 2cc071f306 Fix memory leak introduced by 3a839517ce in SparseGrid
Following 3a839517ce, SparseGrid::Reset() replaces the value of m_Data
(a C-style dynamically sized array) with a new value-initialised array,
by using the new operator. Previous code simply did a memset.
This means that when m_Data was not null, it leaked memory as the
previous array was not deleted.

SparseGrid::Reset is called when destroying the sparse grid, and a
SparseGrid is used by the long pathfinder when computing JPS paths. As
that is called rather often, it resulted in a relatively serious memory
leak that could make very long games use several GB of memory.

This fixes the leak by using placement new, which re-uses the memory,
effectively doing the same as the previously existing memset.

Profiling by historic_bruno and elexis showed that performance from
value-initialising with placement new was at worst similar to memset,
and testing shows this was compiled in a memset call in several cases
anyways.

Reviewed By: elexis
Fixes #5522

Differential Revision: https://code.wildfiregames.com/D2121
This was SVN commit r22545.
2019-07-24 17:11:22 +00:00
..
components UnitMotion - Fix a rare pathfinding issues where units tried going straight through walls, and make sure a long path is computed even when the target is within short path or direct path range. 2019-07-23 06:18:07 +00:00
docs Replace deprecated jsval with JS::Value. 2017-08-28 10:27:36 +00:00
helpers Fix memory leak introduced by 3a839517ce in SparseGrid 2019-07-24 17:11:22 +00:00
scripting UnitMotion - Send messages to UnitAI when obstructed, to allow stopping early when walking and avoiding pathfinding lag. 2019-07-22 18:07:24 +00:00
serialization SpiderMonkey-related changes in preparation for the upgrade to SpiderMonkey 45, refs #4893. 2019-01-13 16:37:41 +00:00
system Improvements to simulation hotloading before the SM upgrade, refs #4893. 2019-07-19 21:58:58 +00:00
tests Update of the scripting tests. Test some modding features and update JS::Value integer limits. 2019-07-19 15:41:27 +00:00
MessageTypes.h UnitMotion - Send messages to UnitAI when obstructed, to allow stopping early when walking and avoiding pathfinding lag. 2019-07-22 18:07:24 +00:00
Simulation2.cpp Provide ScriptInterface CreateObject and CreateArray functions to replace Eval calls following 7c2e9027c2, 1c0536bf08 and later. 2019-07-22 19:35:14 +00:00
Simulation2.h Remove unnecessary argument from CSimulation2::InitGame 2018-02-09 19:50:01 +00:00
TypeList.h UnitMotion - Send messages to UnitAI when obstructed, to allow stopping early when walking and avoiding pathfinding lag. 2019-07-22 18:07:24 +00:00