[Scummvm-git-logs] scummvm master -> 27eb8d4454d7e3ff2cbb572a0896a5c50b1eb048
dreammaster
noreply at scummvm.org
Wed May 31 02:17:14 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
27eb8d4454 MM: MM1: Fix memory corruption in title screen
Commit: 27eb8d4454d7e3ff2cbb572a0896a5c50b1eb048
https://github.com/scummvm/scummvm/commit/27eb8d4454d7e3ff2cbb572a0896a5c50b1eb048
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2023-05-30T19:17:02-07:00
Commit Message:
MM: MM1: Fix memory corruption in title screen
Changed paths:
engines/mm/mm1/views_enh/main_menu.cpp
diff --git a/engines/mm/mm1/views_enh/main_menu.cpp b/engines/mm/mm1/views_enh/main_menu.cpp
index 37937711982..efd179250f2 100644
--- a/engines/mm/mm1/views_enh/main_menu.cpp
+++ b/engines/mm/mm1/views_enh/main_menu.cpp
@@ -45,7 +45,7 @@ bool MainMenu::msgUnfocus(const UnfocusMessage &msg) {
}
void MainMenu::loadCircles() {
- const Common::Rect r(0, 0, CIRCLE_RADIUS * 2, CIRCLE_RADIUS * 2);
+ const Common::Rect r(0, 0, (CIRCLE_RADIUS + 1) * 2, (CIRCLE_RADIUS + 1) * 2);
Gfx::ScreenDecoder decoder;
decoder._indexes[0] = 0;
decoder._indexes[1] = 2;
@@ -57,7 +57,7 @@ void MainMenu::loadCircles() {
const Graphics::Surface *src = decoder.getSurface();
Graphics::ManagedSurface *dest = &_circles[i];
- dest->create(CIRCLE_RADIUS * 2, CIRCLE_RADIUS * 2);
+ dest->create((CIRCLE_RADIUS + 1) * 2, (CIRCLE_RADIUS + 1) * 2);
dest->fillRect(r, 255);
dest->setTransparentColor(255);
copyCircle(src, dest);
@@ -83,7 +83,7 @@ void MainMenu::copyCircle(const Graphics::Surface *src,
y--;
p += 2 * (x - y) + 1;
}
- drawCircleLine(src, dest, x, y);
+ drawCircleLine(src, dest, x + 1, y + 1);
}
}
@@ -95,6 +95,9 @@ void MainMenu::drawCircleLine(const Graphics::Surface *src,
src1 = (const byte *)src->getBasePtr(CIRCLE_X + CIRCLE_RADIUS - x, CIRCLE_Y + CIRCLE_RADIUS + y);
src2 = (const byte *)src->getBasePtr(CIRCLE_X + CIRCLE_RADIUS + x, CIRCLE_Y + CIRCLE_RADIUS + y);
dest1 = (byte *)dest->getBasePtr(CIRCLE_RADIUS - x, CIRCLE_RADIUS + y);
+
+const byte *dest2 = dest1 + (src2 - src1);
+assert(dest2 < (const byte *)dest->getBasePtr(0, dest->h));
Common::copy(src1, src2, dest1);
src1 = (const byte *)src->getBasePtr(CIRCLE_X + CIRCLE_RADIUS - x, CIRCLE_Y + CIRCLE_RADIUS - y);
More information about the Scummvm-git-logs
mailing list