diff options
| author | Andrew Kurushin | 2010-10-24 22:17:44 +0000 | 
|---|---|---|
| committer | Andrew Kurushin | 2010-10-24 22:17:44 +0000 | 
| commit | 67cc1b8a84e8cbc344e87fe0f4715cae96199b69 (patch) | |
| tree | fddf53a8a74288676993025c5c1ad073982db740 /engines/saga/resource.cpp | |
| parent | 859c1c2c08c39262de6b6ba6e1169bb03d14353a (diff) | |
| download | scummvm-rg350-67cc1b8a84e8cbc344e87fe0f4715cae96199b69.tar.gz scummvm-rg350-67cc1b8a84e8cbc344e87fe0f4715cae96199b69.tar.bz2 scummvm-rg350-67cc1b8a84e8cbc344e87fe0f4715cae96199b69.zip | |
SAGA: replace Resource:loadResource malloc with ByteArray class
svn-id: r53779
Diffstat (limited to 'engines/saga/resource.cpp')
| -rw-r--r-- | engines/saga/resource.cpp | 20 | 
1 files changed, 9 insertions, 11 deletions
| diff --git a/engines/saga/resource.cpp b/engines/saga/resource.cpp index 7b61676ffe..0fb7327f0d 100644 --- a/engines/saga/resource.cpp +++ b/engines/saga/resource.cpp @@ -103,8 +103,6 @@ bool ResourceContext::load(SagaEngine *vm, Resource *resource) {  	uint32 subjectResourceId;  	uint32 patchResourceId;  	ResourceData *subjectResourceData; -	byte *tableBuffer; -	size_t tableSize;  	bool isMacBinary;  	if (_fileName == NULL) { // IHNM special case @@ -141,10 +139,12 @@ bool ResourceContext::load(SagaEngine *vm, Resource *resource) {  		if (subjectContext == NULL) {  			error("ResourceContext::load() Subject context not found");  		} -		resource->loadResource(this, _table.size() - 1, tableBuffer, tableSize); +		ByteArray tableBuffer; -		MemoryReadStreamEndian readS2(tableBuffer, tableSize, _isBigEndian); -		for (i = 0; i < tableSize / 8; i++) { +		resource->loadResource(this, _table.size() - 1, tableBuffer); + +		ByteArrayReadStreamEndian readS2(tableBuffer, _isBigEndian); +		for (i = 0; i < tableBuffer.size() / 8; i++) {  			subjectResourceId = readS2.readUint32();  			patchResourceId = readS2.readUint32();  			subjectResourceData = subjectContext->getResourceData(subjectResourceId); @@ -153,7 +153,6 @@ bool ResourceContext::load(SagaEngine *vm, Resource *resource) {  			subjectResourceData->offset = resourceData->offset;  			subjectResourceData->size = resourceData->size;  		} -		free(tableBuffer);  	}  	//process external patch files @@ -366,7 +365,7 @@ void Resource::clearContexts() {  	}  } -void Resource::loadResource(ResourceContext *context, uint32 resourceId, byte*&resourceBuffer, size_t &resourceSize) { +void Resource::loadResource(ResourceContext *context, uint32 resourceId, ByteArray &resourceBuffer) {  	Common::File *file;  	uint32 resourceOffset;  	ResourceData *resourceData; @@ -377,15 +376,14 @@ void Resource::loadResource(ResourceContext *context, uint32 resourceId, byte*&r  	file = context->getFile(resourceData);  	resourceOffset = resourceData->offset; -	resourceSize = resourceData->size; -	debug(8, "loadResource %d 0x%X:0x%X", resourceId, resourceOffset, uint(resourceSize)); +	debug(8, "loadResource %d 0x%X:0x%X", resourceId, resourceOffset, uint(resourceData->size)); +	resourceBuffer.resize(resourceData->size); -	resourceBuffer = (byte*)malloc(resourceSize);  	file->seek((long)resourceOffset, SEEK_SET); -	if (file->read(resourceBuffer, resourceSize) != resourceSize) { +	if (file->read(resourceBuffer.getBuffer(), resourceBuffer.size()) != resourceBuffer.size()) {  		error("Resource::loadResource() failed to read");  	} | 
