Issue #3 was caused by the freeing of the io pointer in the GameGPD class. On line 116 of gpduploader.cpp, the GameGPD::CleanGPD method is called, which calls the XDBF::Clean method. In this method, the io pointer is freed, then is set to a newly allocated FileIO instance.
When the io is set, it doesn't set the io instance in the class which called the Clean method (GameGPD), resulting in GameGPD referencing io referencing a bad memory address.
The Solution
By making XDBF's io public, we can then reset the GameGPDio after calling XDBF::Clean.
The Issue
Issue #3 was caused by the freeing of the
io
pointer in theGameGPD
class. On line 116 ofgpduploader.cpp
, theGameGPD::CleanGPD
method is called, which calls theXDBF::Clean
method. In this method, theio
pointer is freed, then is set to a newly allocatedFileIO
instance.When the
io
is set, it doesn't set theio
instance in the class which called theClean
method (GameGPD
), resulting inGameGPD
referencingio
referencing a bad memory address.The Solution
By making
XDBF
'sio
public, we can then reset theGameGPD
io
after callingXDBF::Clean
.