From fba0e509033fccc4b4cd06c57b30f9e5ad343edf Mon Sep 17 00:00:00 2001 From: Joshua Peisach Date: Fri, 25 Aug 2023 16:09:29 -0400 Subject: [PATCH] Match MxBitmap vtable14, down to reg swap. Maybe some import function? --- LEGO1/mxbitmap.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/LEGO1/mxbitmap.cpp b/LEGO1/mxbitmap.cpp index cee082a2..d9004b31 100644 --- a/LEGO1/mxbitmap.cpp +++ b/LEGO1/mxbitmap.cpp @@ -35,7 +35,6 @@ MxResult MxBitmap::vtable14(MxBitmap *p_bitmap) { MxLong height; MxResult result = FAILURE; - MxLong size; this->m_info = new MxBITMAPINFO; if(this->m_info) { @@ -43,13 +42,16 @@ MxResult MxBitmap::vtable14(MxBitmap *p_bitmap) if (height <= 0L) { height = -height; } - size = (p_bitmap->m_bmiHeader->biWidth + 3U & -4) * height; - this->m_data = (LPVOID*) new MxU8[size]; + this->m_data = (LPVOID*) new MxU8[(p_bitmap->m_bmiHeader->biWidth + 3U & -4) * height]; if(this->m_data) { memcpy(this->m_info, p_bitmap->m_info, sizeof(MxBITMAPINFO)); - memcpy(this->m_bmiHeader, p_bitmap->m_bmiHeader, sizeof(MxBITMAPINFO)); - memcpy(this->m_paletteData, p_bitmap->m_paletteData, sizeof(MxBITMAPINFO)); - memcpy(this->m_data, p_bitmap->m_data, sizeof(MxBITMAPINFO)); + + height = p_bitmap->m_bmiHeader->biHeight; + if (height <= 0L) { + height = -height; + } + memcpy(this->m_data, p_bitmap->m_data, (p_bitmap->m_bmiHeader->biWidth + 3U & -4) * height); + result = SUCCESS; this->m_bmiHeader = &this->m_info->bmiHeader; this->m_paletteData = this->m_info->bmiColors;