aboutsummaryrefslogtreecommitdiff
path: root/saga/sprite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'saga/sprite.cpp')
-rw-r--r--saga/sprite.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/saga/sprite.cpp b/saga/sprite.cpp
index fb74d85967..253a3e504d 100644
--- a/saga/sprite.cpp
+++ b/saga/sprite.cpp
@@ -69,7 +69,7 @@ void Sprite::loadList(int resourceId, SpriteList &spriteList) {
uint16 newSpriteCount;
uint16 spriteCount;
int i;
- int outputLength;
+ int outputLength, inputLength;
uint32 offset;
const byte *spritePointer;
const byte *spriteDataPointer;
@@ -125,7 +125,8 @@ void Sprite::loadList(int resourceId, SpriteList &spriteList) {
}
spriteDataPointer = spritePointer + readS2.pos();
outputLength = spriteInfo->width * spriteInfo->height;
- decodeRLEBuffer(spriteDataPointer, 64000, outputLength); //todo: 64000 - should be replace by real input length
+ inputLength = spriteListLength - (spriteDataPointer - spriteListData);
+ decodeRLEBuffer(spriteDataPointer, inputLength, outputLength);
spriteInfo->decodedBuffer = (byte *) malloc(outputLength);
if (spriteInfo->decodedBuffer == NULL) {
memoryError("Sprite::loadList");