diff options
author | Paul Gilbert | 2011-05-03 22:24:00 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-05-03 22:40:48 +1000 |
commit | 9f30ffa76f927b1a58dfb48078506a9a67171326 (patch) | |
tree | 93597598a155c81e02221b0511e2aa456cf7dd04 | |
parent | 73396954c90cc113284417d9d27b20290b3b80bb (diff) | |
download | scummvm-rg350-9f30ffa76f927b1a58dfb48078506a9a67171326.tar.gz scummvm-rg350-9f30ffa76f927b1a58dfb48078506a9a67171326.tar.bz2 scummvm-rg350-9f30ffa76f927b1a58dfb48078506a9a67171326.zip |
TSAGE: Bugfixes to allow for drawing message strings that are empty
-rw-r--r-- | engines/tsage/graphics.cpp | 2 | ||||
-rw-r--r-- | engines/tsage/resources.cpp | 13 | ||||
-rw-r--r-- | engines/tsage/resources.h | 2 |
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 { |