GRIM: Fix some memory leaks related to not always freeing streams

This commit is contained in:
Joel Teichroeb 2012-01-20 12:06:01 -08:00
parent 439f0eebe7
commit af7f68db76
12 changed files with 12 additions and 10 deletions

View file

@ -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;
} }

View file

@ -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() {

View file

@ -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) {

View file

@ -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 {

View file

@ -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;

View file

@ -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) {

View file

@ -77,7 +77,6 @@ LipSync::LipSync(const Common::String &filename, Common::SeekableReadStream *dat
} }
} }
delete data;
} }
LipSync::~LipSync() { LipSync::~LipSync() {

View file

@ -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) {

View file

@ -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;

View file

@ -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

View file

@ -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;
} }

View file

@ -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() :