aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tsage/graphics.cpp2
-rw-r--r--engines/tsage/resources.cpp13
-rw-r--r--engines/tsage/resources.h2
3 files changed, 9 insertions, 8 deletions
diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp
index 9d840bf00d..af38f211b2 100644
--- a/engines/tsage/graphics.cpp
+++ b/engines/tsage/graphics.cpp
@@ -484,6 +484,8 @@ static GfxSurface ResizeSurface(GfxSurface &src, int xSize, int ySize, int trans
*/
void GfxSurface::copyFrom(GfxSurface &src, Rect srcBounds, Rect destBounds, Region *priorityRegion) {
GfxSurface srcImage;
+ if (srcBounds.isEmpty())
+ return;
if (srcBounds == src.getBounds())
srcImage = src;
diff --git a/engines/tsage/resources.cpp b/engines/tsage/resources.cpp
index a73c23ab7f..2b678a848a 100644
--- a/engines/tsage/resources.cpp
+++ b/engines/tsage/resources.cpp
@@ -404,11 +404,11 @@ byte *TLib::getSubResource(int resNum, int rlbNum, int index, uint *size, bool s
/**
* Retrieves a given message resource, and returns the specified message number
*/
-Common::String TLib::getMessage(int resNum, int lineNum, bool suppressErrors) {
- byte *msgData = getResource(RES_MESSAGE, resNum, 0);
+bool TLib::getMessage(int resNum, int lineNum, Common::String &result, bool suppressErrors) {
+ byte *msgData = getResource(RES_MESSAGE, resNum, 0, true);
if (!msgData) {
if (suppressErrors)
- return Common::String();
+ return false;
error("Unknown message %d line %d", resNum, lineNum);
}
@@ -417,9 +417,9 @@ Common::String TLib::getMessage(int resNum, int lineNum, bool suppressErrors) {
while (lineNum-- > 0)
srcP += strlen(srcP) + 1;
- Common::String result(srcP);
+ result = Common::String(srcP);
_memoryManager.deallocate(msgData);
- return result;
+ return true;
}
/*--------------------------------------------------------------------------*/
@@ -489,8 +489,7 @@ Common::String ResourceManager::getMessage(int resNum, int lineNum, bool suppres
Common::String result;
for (uint idx = 0; idx < _libList.size(); ++idx) {
- result = _libList[idx]->getMessage(resNum, lineNum, true);
- if (!result.empty())
+ if (_libList[idx]->getMessage(resNum, lineNum, result, true))
return result;
}
diff --git a/engines/tsage/resources.h b/engines/tsage/resources.h
index 4ae41f6557..7b518cabd6 100644
--- a/engines/tsage/resources.h
+++ b/engines/tsage/resources.h
@@ -159,7 +159,7 @@ public:
byte *getResource(ResourceType resType, uint16 resNum, uint16 rlbNum, bool suppressErrors = false);
bool getPalette(int paletteNum, byte *palData, uint *startNum, uint *numEntries);
byte *getSubResource(int resNum, int rlbNum, int index, uint *size, bool suppressErrors = false);
- Common::String getMessage(int resNum, int lineNum, bool suppressErrors = false);
+ bool getMessage(int resNum, int lineNum, Common::String &result, bool suppressErrors = false);
};
class ResourceManager {