aboutsummaryrefslogtreecommitdiff
path: root/queen/resource.cpp
diff options
context:
space:
mode:
authorJoost Peters2003-10-28 12:42:35 +0000
committerJoost Peters2003-10-28 12:42:35 +0000
commite02fe63f2eab159ab9f35fe270e10435665c9d6b (patch)
tree31487aa97c340b84dbc1e3fa80ff1c13c2578865 /queen/resource.cpp
parent26a873a2e485c75904ae78e486556ede3ef7030c (diff)
downloadscummvm-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.cpp15
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);