From c4e7088b0e3929f40e9d26b20eb2f10914fd65c3 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Tue, 7 Jan 2020 20:48:05 +0100 Subject: [PATCH] Clamp height and ystart to semi-sensible values to avoid memory corruption. --- src/emucore/tia/frame-manager/FrameManager.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/emucore/tia/frame-manager/FrameManager.cxx b/src/emucore/tia/frame-manager/FrameManager.cxx index 3514b93f7..55d94115c 100644 --- a/src/emucore/tia/frame-manager/FrameManager.cxx +++ b/src/emucore/tia/frame-manager/FrameManager.cxx @@ -243,8 +243,8 @@ void FrameManager::recalculateMetrics() { throw runtime_error("frame manager: invalid TV mode"); } - myHeight = baseHeight + myAdjustScanlines * 2; - myYStart = std::max(0, ystartBase + (baseHeight - static_cast(myHeight)) / 2 + myVcenter); + myHeight = BSPF::clamp(baseHeight + myAdjustScanlines * 2, 0, myFrameLines); + myYStart = BSPF::clamp(ystartBase + (baseHeight - static_cast(myHeight)) / 2 + myVcenter, 0, myFrameLines); myJitterEmulation.setYStart(myYStart); }