aboutsummaryrefslogtreecommitdiff
path: root/engines/made/resource.cpp
diff options
context:
space:
mode:
authorBenjamin Haisch2008-05-09 07:22:22 +0000
committerBenjamin Haisch2008-05-09 07:22:22 +0000
commit55e4b05b185622194d644f5b27490e33cda8c483 (patch)
tree8ef044d5dffc9f2ecc184725355aade8e460563c /engines/made/resource.cpp
parent420d376a9004a60c0443c74c07554506ad2344c6 (diff)
downloadscummvm-rg350-55e4b05b185622194d644f5b27490e33cda8c483.tar.gz
scummvm-rg350-55e4b05b185622194d644f5b27490e33cda8c483.tar.bz2
scummvm-rg350-55e4b05b185622194d644f5b27490e33cda8c483.zip
- Fixed a bug which sometimes caused crashes when ProjectReader::purgeCache() was called
- Some cleanup svn-id: r31961
Diffstat (limited to 'engines/made/resource.cpp')
-rw-r--r--engines/made/resource.cpp15
1 files changed, 6 insertions, 9 deletions
diff --git a/engines/made/resource.cpp b/engines/made/resource.cpp
index 7151f2424a..8c9125127a 100644
--- a/engines/made/resource.cpp
+++ b/engines/made/resource.cpp
@@ -372,7 +372,7 @@ bool ProjectReader::loadResource(ResourceSlot *slot, byte *&buffer, uint32 &size
if (slot && slot->size > 0) {
size = slot->size - 62;
buffer = new byte[size];
- debug(2, "ProjectReader::loadResource() %08X\n", slot->offs + 62); fflush(stdout);
+ debug(2, "ProjectReader::loadResource() %08X", slot->offs + 62);
_fd->seek(slot->offs + 62);
_fd->read(buffer, size);
return true;
@@ -384,8 +384,7 @@ bool ProjectReader::loadResource(ResourceSlot *slot, byte *&buffer, uint32 &size
ResourceSlot *ProjectReader::getResourceSlot(uint32 resType, uint index) {
ResourceSlots *slots = _resSlots[resType];
if (index >= 1 && index < slots->size()) {
- ResourceSlot *slot = &slots->operator[](index);
- return slot;
+ return &slots->operator[](index);
} else {
return NULL;
}
@@ -398,22 +397,20 @@ Resource *ProjectReader::getResourceFromCache(ResourceSlot *slot) {
}
void ProjectReader::addResourceToCache(ResourceSlot *slot, Resource *res) {
- if (_cacheCount >= kMaxResourceCacheCount) {
+ if (_cacheCount >= kMaxResourceCacheCount)
purgeCache();
- }
slot->res = res;
- slot->refCount = 0;
+ slot->refCount = 1;
_cacheCount++;
}
void ProjectReader::tossResourceFromCache(ResourceSlot *slot) {
- if (slot->res) {
+ if (slot->res)
slot->refCount--;
- }
}
void ProjectReader::purgeCache() {
- printf("ProjectReader::purgeCache()\n");
+ debug(2, "ProjectReader::purgeCache()");
for (ResMap::const_iterator resTypeIter = _resSlots.begin(); resTypeIter != _resSlots.end(); ++resTypeIter) {
ResourceSlots *slots = (*resTypeIter)._value;
for (ResourceSlots::iterator slotIter = slots->begin(); slotIter != slots->end(); ++slotIter) {