diff options
author | Joost Peters | 2003-10-28 12:42:35 +0000 |
---|---|---|
committer | Joost Peters | 2003-10-28 12:42:35 +0000 |
commit | e02fe63f2eab159ab9f35fe270e10435665c9d6b (patch) | |
tree | 31487aa97c340b84dbc1e3fa80ff1c13c2578865 /queen/resource.cpp | |
parent | 26a873a2e485c75904ae78e486556ede3ef7030c (diff) | |
download | scummvm-rg350-e02fe63f2eab159ab9f35fe270e10435665c9d6b.tar.gz scummvm-rg350-e02fe63f2eab159ab9f35fe270e10435665c9d6b.tar.bz2 scummvm-rg350-e02fe63f2eab159ab9f35fe270e10435665c9d6b.zip |
added loadFileMalloc() method
svn-id: r10988
Diffstat (limited to 'queen/resource.cpp')
-rw-r--r-- | queen/resource.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/queen/resource.cpp b/queen/resource.cpp index 2b95f9566d..ed3ef1071d 100644 --- a/queen/resource.cpp +++ b/queen/resource.cpp @@ -79,7 +79,7 @@ Resource::~Resource() { _resourceFile->close(); if(_resourceTable != _resourceTablePEM10) delete[] _resourceTable; - free(_JAS2Ptr); + delete[] _JAS2Ptr; } int32 Resource::resourceIndex(const char *filename) { @@ -143,9 +143,18 @@ uint32 Resource::fileOffset(const char *filename) { uint8 *Resource::loadFile(const char *filename, uint32 skipBytes, byte *dstBuf) { uint32 size = fileSize(filename); - if (dstBuf == NULL) { + if (dstBuf == NULL) + dstBuf = new byte[size]; + // skip 'skipBytes' bytes (useful for headers) + _resourceFile->seek(fileOffset(filename) + skipBytes, SEEK_SET); + _resourceFile->read(dstBuf, size - skipBytes); + return dstBuf; +} + +uint8 *Resource::loadFileMalloc(const char *filename, uint32 skipBytes, byte *dstBuf) { + uint32 size = fileSize(filename); + if (dstBuf == NULL) dstBuf = (byte *)malloc(size); - } // skip 'skipBytes' bytes (useful for headers) _resourceFile->seek(fileOffset(filename) + skipBytes, SEEK_SET); _resourceFile->read(dstBuf, size - skipBytes); |