aboutsummaryrefslogtreecommitdiff
path: root/queen/resource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'queen/resource.cpp')
-rw-r--r--queen/resource.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/queen/resource.cpp b/queen/resource.cpp
index ae46696d83..abc4f3fdc0 100644
--- a/queen/resource.cpp
+++ b/queen/resource.cpp
@@ -139,13 +139,15 @@ uint32 Resource::fileOffset(const char *filename) {
return _resourceTable[resourceIndex(filename)].offset;
}
-uint8 *Resource::loadFile(const char *filename, uint32 skipBytes) {
+uint8 *Resource::loadFile(const char *filename, uint32 skipBytes, byte *dstBuf) {
uint32 size = fileSize(filename);
- byte *mem = new byte[size];
+ if (dstBuf == NULL) {
+ dstBuf = new byte[size];
+ }
// skip 'skipBytes' bytes (useful for headers)
_resourceFile->seek(fileOffset(filename) + skipBytes, SEEK_SET);
- _resourceFile->read(mem, size - skipBytes);
- return mem;
+ _resourceFile->read(dstBuf, size - skipBytes);
+ return dstBuf;
}
bool Resource::exists(const char *filename) {