TWINE: check for invalid clip rect in drawBrickSprite

This commit is contained in:
Martin Gerhardy 2021-02-25 05:05:26 +01:00
parent 1b4bffe1ad
commit 323ca6e8e4
2 changed files with 5 additions and 3 deletions

View File

@ -326,9 +326,7 @@ void Redraw::processDrawListShadows(const DrawListStruct &drawCmd) {
_engine->_interface->setClip(renderRect);
if (_engine->_interface->textWindow.left <= _engine->_interface->textWindow.right && _engine->_interface->textWindow.top <= _engine->_interface->textWindow.bottom) {
_engine->_grid->drawSprite(drawCmd.offset, renderRect.left, renderRect.top, _engine->_resources->spriteShadowPtr);
}
_engine->_grid->drawSprite(drawCmd.offset, renderRect.left, renderRect.top, _engine->_resources->spriteShadowPtr);
const int32 tmpX = (drawCmd.x + BRICK_HEIGHT) / BRICK_SIZE;
const int32 tmpY = drawCmd.y / BRICK_HEIGHT;

View File

@ -509,6 +509,10 @@ bool Grid::drawSprite(int32 posX, int32 posY, const SpriteData &ptr) {
// WARNING: Rewrite this function to have better performance
bool Grid::drawBrickSprite(int32 index, int32 posX, int32 posY, const uint8 *ptr, bool isSprite) {
if (_engine->_interface->textWindow.left > _engine->_interface->textWindow.right || _engine->_interface->textWindow.top > _engine->_interface->textWindow.bottom) {
return false;
}
const int32 left = posX + *(ptr + 2);
if (left > _engine->_interface->textWindow.right) {
return false;