GRIM: Fix some memory leaks related to not always freeing streams
This commit is contained in:
parent
439f0eebe7
commit
af7f68db76
12 changed files with 12 additions and 10 deletions
|
@ -124,7 +124,6 @@ BitmapData::BitmapData(const Common::String &fname, Common::SeekableReadStream *
|
||||||
Debug::error(Debug::Bitmaps, "Invalid magic loading bitmap");
|
Debug::error(Debug::Bitmaps, "Invalid magic loading bitmap");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
delete data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,6 @@ CMap::CMap(const Common::String &fileName, Common::SeekableReadStream *data) :
|
||||||
|
|
||||||
data->seek(64, SEEK_SET);
|
data->seek(64, SEEK_SET);
|
||||||
data->read(_colors, sizeof(_colors));
|
data->read(_colors, sizeof(_colors));
|
||||||
delete data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CMap::~CMap() {
|
CMap::~CMap() {
|
||||||
|
|
|
@ -116,7 +116,6 @@ Costume::Costume(const Common::String &fname, Common::SeekableReadStream *data,
|
||||||
TextSplitter ts(data);
|
TextSplitter ts(data);
|
||||||
loadGRIM(ts, prevCost);
|
loadGRIM(ts, prevCost);
|
||||||
}
|
}
|
||||||
delete data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Costume::loadGRIM(TextSplitter &ts, Costume *prevCost) {
|
void Costume::loadGRIM(TextSplitter &ts, Costume *prevCost) {
|
||||||
|
|
|
@ -97,7 +97,6 @@ void Font::load(const Common::String &filename, Common::SeekableReadStream *data
|
||||||
data->read(_fontData, _dataSize);
|
data->read(_fontData, _dataSize);
|
||||||
|
|
||||||
g_driver->createFont(this);
|
g_driver->createFont(this);
|
||||||
delete data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16 Font::getCharIndex(unsigned char c) const {
|
uint16 Font::getCharIndex(unsigned char c) const {
|
||||||
|
|
|
@ -963,6 +963,7 @@ Set *GrimEngine::loadSet(const Common::String &name) {
|
||||||
warning("Could not find scene file %s", name.c_str());
|
warning("Could not find scene file %s", name.c_str());
|
||||||
|
|
||||||
s = new Set(name, stream);
|
s = new Set(name, stream);
|
||||||
|
delete stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
|
|
|
@ -44,7 +44,6 @@ KeyframeAnim::KeyframeAnim(const Common::String &fname, Common::SeekableReadStre
|
||||||
TextSplitter ts(data);
|
TextSplitter ts(data);
|
||||||
loadText(ts);
|
loadText(ts);
|
||||||
}
|
}
|
||||||
delete data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeyframeAnim::loadBinary(Common::SeekableReadStream *data) {
|
void KeyframeAnim::loadBinary(Common::SeekableReadStream *data) {
|
||||||
|
|
|
@ -77,7 +77,6 @@ LipSync::LipSync(const Common::String &filename, Common::SeekableReadStream *dat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LipSync::~LipSync() {
|
LipSync::~LipSync() {
|
||||||
|
|
|
@ -81,7 +81,6 @@ void MaterialData::initGrim(const Common::String &filename, Common::SeekableRead
|
||||||
data->seek(12, SEEK_CUR);
|
data->seek(12, SEEK_CUR);
|
||||||
data->read(t->_data, t->_width * t->_height);
|
data->read(t->_data, t->_width * t->_height);
|
||||||
}
|
}
|
||||||
delete data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadTGA(Common::SeekableReadStream *data, Texture *t) {
|
void loadTGA(Common::SeekableReadStream *data, Texture *t) {
|
||||||
|
|
|
@ -57,7 +57,6 @@ Model::Model(const Common::String &filename, Common::SeekableReadStream *data, C
|
||||||
TextSplitter ts(data);
|
TextSplitter ts(data);
|
||||||
loadText(&ts, cmap);
|
loadText(&ts, cmap);
|
||||||
}
|
}
|
||||||
delete data;
|
|
||||||
|
|
||||||
Math::Vector3d max;
|
Math::Vector3d max;
|
||||||
|
|
||||||
|
|
|
@ -207,7 +207,6 @@ void EMIModel::draw() {
|
||||||
|
|
||||||
EMIModel::EMIModel(const Common::String &filename, Common::SeekableReadStream *data, EMIModel *parent) : _fname(filename) {
|
EMIModel::EMIModel(const Common::String &filename, Common::SeekableReadStream *data, EMIModel *parent) : _fname(filename) {
|
||||||
loadMesh(data);
|
loadMesh(data);
|
||||||
delete data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end of namespace Grim
|
} // end of namespace Grim
|
||||||
|
|
|
@ -270,6 +270,7 @@ Common::SeekableReadStream *ResourceLoader::openNewStreamFile(Common::String fna
|
||||||
byte *buf = new byte[size];
|
byte *buf = new byte[size];
|
||||||
s->read(buf, size);
|
s->read(buf, size);
|
||||||
putIntoCache(fname, buf, size);
|
putIntoCache(fname, buf, size);
|
||||||
|
delete s;
|
||||||
s = new Common::MemoryReadStream(buf, size);
|
s = new Common::MemoryReadStream(buf, size);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -301,6 +302,7 @@ Bitmap *ResourceLoader::loadBitmap(const Common::String &filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Bitmap *result = new Bitmap(filename, stream);
|
Bitmap *result = new Bitmap(filename, stream);
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -313,6 +315,7 @@ CMap *ResourceLoader::loadColormap(const Common::String &filename) {
|
||||||
|
|
||||||
CMap *result = new CMap(filename, stream);
|
CMap *result = new CMap(filename, stream);
|
||||||
_colormaps.push_back(result);
|
_colormaps.push_back(result);
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -343,6 +346,7 @@ Costume *ResourceLoader::loadCostume(const Common::String &filename, Costume *pr
|
||||||
}
|
}
|
||||||
|
|
||||||
Costume *result = new Costume(filename, stream, prevCost);
|
Costume *result = new Costume(filename, stream, prevCost);
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -355,6 +359,7 @@ Font *ResourceLoader::loadFont(const Common::String &filename) {
|
||||||
error("Could not find font file %s", filename.c_str());
|
error("Could not find font file %s", filename.c_str());
|
||||||
|
|
||||||
Font *result = new Font(filename, stream);
|
Font *result = new Font(filename, stream);
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -368,6 +373,7 @@ KeyframeAnim *ResourceLoader::loadKeyframe(const Common::String &filename) {
|
||||||
|
|
||||||
KeyframeAnim *result = new KeyframeAnim(filename, stream);
|
KeyframeAnim *result = new KeyframeAnim(filename, stream);
|
||||||
_keyframeAnims.push_back(result);
|
_keyframeAnims.push_back(result);
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -389,6 +395,7 @@ LipSync *ResourceLoader::loadLipSync(const Common::String &filename) {
|
||||||
delete result;
|
delete result;
|
||||||
result = NULL;
|
result = NULL;
|
||||||
}
|
}
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -403,6 +410,7 @@ Material *ResourceLoader::loadMaterial(const Common::String &filename, CMap *c)
|
||||||
error("Could not find material %s", filename.c_str());
|
error("Could not find material %s", filename.c_str());
|
||||||
|
|
||||||
Material *result = new Material(fname, stream, c);
|
Material *result = new Material(fname, stream, c);
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -417,6 +425,7 @@ Model *ResourceLoader::loadModel(const Common::String &filename, CMap *c, Model
|
||||||
|
|
||||||
Model *result = new Model(filename, stream, c, parent);
|
Model *result = new Model(filename, stream, c, parent);
|
||||||
_models.push_back(result);
|
_models.push_back(result);
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -433,6 +442,7 @@ EMIModel *ResourceLoader::loadModelEMI(const Common::String &filename, EMIModel
|
||||||
|
|
||||||
EMIModel *result = new EMIModel(filename, stream, parent);
|
EMIModel *result = new EMIModel(filename, stream, parent);
|
||||||
_emiModels.push_back(result);
|
_emiModels.push_back(result);
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -448,6 +458,7 @@ Skeleton *ResourceLoader::loadSkeleton(const Common::String &filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Skeleton *result = new Skeleton(filename, stream);
|
Skeleton *result = new Skeleton(filename, stream);
|
||||||
|
delete stream;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,6 @@ Set::Set(const Common::String &sceneName, Common::SeekableReadStream *data) :
|
||||||
} else {
|
} else {
|
||||||
loadBinary(data);
|
loadBinary(data);
|
||||||
}
|
}
|
||||||
delete data;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Set::Set() :
|
Set::Set() :
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue