mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-19 21:10:12 +02:00
do not leak scenarioOpts in CMapInfo
This commit is contained in:
parent
cf1d5d0bc9
commit
437eadf1ed
@ -1146,7 +1146,7 @@ void SelectionTab::parseGames(const std::unordered_set<ResourceID> &files, bool
|
||||
// Create the map info object
|
||||
CMapInfo mapInfo;
|
||||
mapInfo.mapHeader = make_unique<CMapHeader>();
|
||||
mapInfo.scenarioOpts = new StartInfo;
|
||||
mapInfo.scenarioOpts = nullptr;//to be created by serialiser
|
||||
lf >> *(mapInfo.mapHeader.get()) >> mapInfo.scenarioOpts;
|
||||
mapInfo.fileURI = file.getName();
|
||||
mapInfo.countPlayers();
|
||||
|
@ -35,11 +35,13 @@ CMapInfo::CMapInfo() : scenarioOpts(nullptr), playerAmnt(0), humanPlayers(0),
|
||||
|
||||
#define STEAL(x) x = std::move(tmp.x)
|
||||
|
||||
CMapInfo::CMapInfo(CMapInfo && tmp)
|
||||
CMapInfo::CMapInfo(CMapInfo && tmp):
|
||||
scenarioOpts(nullptr), playerAmnt(0), humanPlayers(0),
|
||||
actualHumanPlayers(0), isRandomMap(false)
|
||||
{
|
||||
std::swap(scenarioOpts, tmp.scenarioOpts);
|
||||
STEAL(mapHeader);
|
||||
STEAL(campaignHeader);
|
||||
STEAL(scenarioOpts);
|
||||
STEAL(fileURI);
|
||||
STEAL(date);
|
||||
STEAL(playerAmnt);
|
||||
@ -48,6 +50,10 @@ CMapInfo::CMapInfo(CMapInfo && tmp)
|
||||
STEAL(isRandomMap);
|
||||
}
|
||||
|
||||
CMapInfo::~CMapInfo()
|
||||
{
|
||||
vstd::clear_pointer(scenarioOpts);
|
||||
}
|
||||
|
||||
void CMapInfo::mapInit(const std::string & fname)
|
||||
{
|
||||
|
@ -32,6 +32,7 @@ public:
|
||||
|
||||
CMapInfo();
|
||||
CMapInfo(CMapInfo && tmp);
|
||||
virtual ~CMapInfo();
|
||||
|
||||
CMapInfo &operator=(CMapInfo &&other);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user