From 0a8cbe4f058ca6c4aaf0bee5223e501bfd4146ee Mon Sep 17 00:00:00 2001 From: tmaul Date: Mon, 21 Jan 2013 01:02:38 +0000 Subject: [PATCH] Added the fixes from Wizard Coder that I have verified using visual leak detector (actually picked some of them up in Finalburn Alpha 2001 but didn't think to push them back). The others are marked as only "possible" leaks so I have left them out. --- src/burn/drv/konami/d_aliens.cpp | 6 ++++-- src/burn/drv/konami/d_twin16.cpp | 6 ++++-- src/burn/drv/snes/snes_ppu.cpp | 2 +- src/burn/drv/taito/d_asuka.cpp | 2 +- src/burn/drv/taito/taito.cpp | 3 ++- src/burn/drv/taito/taito.h | 2 +- src/burn/drv/taito/taito_ic.h | 2 +- src/burn/drv/taito/tc0220ioc.cpp | 3 ++- src/burner/win32/mdi.cpp | 12 ++++++------ src/burner/win32/scrn.cpp | 2 +- src/burner/win32/sel.cpp | 2 +- src/cpu/z80/z80.cpp | 4 ++++ 12 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/burn/drv/konami/d_aliens.cpp b/src/burn/drv/konami/d_aliens.cpp index d6aa5c134..63dcf0a9d 100644 --- a/src/burn/drv/konami/d_aliens.cpp +++ b/src/burn/drv/konami/d_aliens.cpp @@ -493,8 +493,10 @@ static INT32 DrvFrame() } { - memset (DrvInputs, 0xff, 3); - for (INT32 i = 0; i < 8; i++) { + memset (DrvInputs, 0xff, sizeof ( DrvInputs )); + + for (INT32 i = 0; i < 8; i++) + { DrvInputs[0] ^= (DrvJoy1[i] & 1) << i; DrvInputs[1] ^= (DrvJoy2[i] & 1) << i; DrvDips[2] ^= (DrvJoy3[i] & 1) << i; diff --git a/src/burn/drv/konami/d_twin16.cpp b/src/burn/drv/konami/d_twin16.cpp index f50cb3451..69225ef5a 100644 --- a/src/burn/drv/konami/d_twin16.cpp +++ b/src/burn/drv/konami/d_twin16.cpp @@ -1386,8 +1386,10 @@ static INT32 DrvFrame() } { - memset (DrvInputs, 0xff, 5); - for (INT32 i = 0; i < 16; i++) { + memset (DrvInputs, 0xff, sizeof ( DrvInputs )); + + for (INT32 i = 0; i < 16; i++) + { DrvInputs[0] ^= (DrvJoy1[i] & 1) << i; DrvInputs[1] ^= (DrvJoy2[i] & 1) << i; DrvInputs[2] ^= (DrvJoy3[i] & 1) << i; diff --git a/src/burn/drv/snes/snes_ppu.cpp b/src/burn/drv/snes/snes_ppu.cpp index d568cfe84..67fa5a33a 100644 --- a/src/burn/drv/snes/snes_ppu.cpp +++ b/src/burn/drv/snes/snes_ppu.cpp @@ -1092,7 +1092,7 @@ struct OAM int height, width; }; -static struct OAM oam_list[SNES_SCR_WIDTH / 2]; +static struct OAM oam_list[(SNES_SCR_WIDTH / 2) + 1]; #if 0 diff --git a/src/burn/drv/taito/d_asuka.cpp b/src/burn/drv/taito/d_asuka.cpp index ea2e71aba..5ede10747 100644 --- a/src/burn/drv/taito/d_asuka.cpp +++ b/src/burn/drv/taito/d_asuka.cpp @@ -1090,7 +1090,7 @@ UINT8 __fastcall bonze_sound_read(UINT16 a) static void DrvMakeInputs() { - memset (TC0220IOCInput, 0xff, 3); + memset (TC0220IOCInput, 0xff, sizeof ( TC0220IOCInput )); TC0220IOCInput[2] &= ~TaitoInputConfig; // asuka diff --git a/src/burn/drv/taito/taito.cpp b/src/burn/drv/taito/taito.cpp index 26433ebd6..62d8d0567 100644 --- a/src/burn/drv/taito/taito.cpp +++ b/src/burn/drv/taito/taito.cpp @@ -16,7 +16,8 @@ UINT8 TaitoInputPort1[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; UINT8 TaitoInputPort2[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; UINT8 TaitoInputPort3[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; UINT8 TaitoInputPort4[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; -UINT8 TaitoInputPort5[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + +UINT8 TaitoInputPort5[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; UINT8 TaitoDip[2] = { 0, 0 }; UINT8 TaitoInput[6] = { 0, 0, 0, 0, 0, 0 }; UINT8 TaitoReset = 0; diff --git a/src/burn/drv/taito/taito.h b/src/burn/drv/taito/taito.h index 53342eafa..cf88bae3f 100644 --- a/src/burn/drv/taito/taito.h +++ b/src/burn/drv/taito/taito.h @@ -3,7 +3,7 @@ extern UINT8 TaitoInputPort1[8]; extern UINT8 TaitoInputPort2[8]; extern UINT8 TaitoInputPort3[8]; extern UINT8 TaitoInputPort4[8]; -extern UINT8 TaitoInputPort5[8]; +extern UINT8 TaitoInputPort5[16]; extern UINT8 TaitoDip[2]; extern UINT8 TaitoInput[6]; extern UINT8 TaitoReset; diff --git a/src/burn/drv/taito/taito_ic.h b/src/burn/drv/taito/taito_ic.h index ad70266f7..fc3f34534 100644 --- a/src/burn/drv/taito/taito_ic.h +++ b/src/burn/drv/taito/taito_ic.h @@ -198,7 +198,7 @@ extern UINT8 TC0220IOCInputPort0[8]; extern UINT8 TC0220IOCInputPort1[8]; extern UINT8 TC0220IOCInputPort2[8]; extern UINT8 TC0220IOCDip[2]; -extern UINT8 TC0220IOCInput[3]; +extern UINT8 TC0220IOCInput[6]; UINT8 TC0220IOCPortRead(); UINT8 TC0220IOCHalfWordPortRead(); diff --git a/src/burn/drv/taito/tc0220ioc.cpp b/src/burn/drv/taito/tc0220ioc.cpp index e730e0e46..f77c77dac 100644 --- a/src/burn/drv/taito/tc0220ioc.cpp +++ b/src/burn/drv/taito/tc0220ioc.cpp @@ -7,7 +7,8 @@ UINT8 TC0220IOCInputPort0[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; UINT8 TC0220IOCInputPort1[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; UINT8 TC0220IOCInputPort2[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; UINT8 TC0220IOCDip[2] = { 0, 0 }; -UINT8 TC0220IOCInput[3] = { 0, 0, 0 }; + +UINT8 TC0220IOCInput[6] = { 0, 0, 0, 0, 0, 0 }; static UINT8 TC0220IOCRegs[8]; static UINT8 TC0220IOCPort; diff --git a/src/burner/win32/mdi.cpp b/src/burner/win32/mdi.cpp index adbb635f7..083a4e8a0 100644 --- a/src/burner/win32/mdi.cpp +++ b/src/burner/win32/mdi.cpp @@ -124,12 +124,12 @@ BOOL RegNewMDIChild() wcex.lpfnWndProc = VideoWndProc; // video window process callback wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; - wcex.hInstance = hAppInst; // fba instance handle - wcex.hIcon = LoadIcon(hAppInst, MAKEINTRESOURCE(IDI_APP)); // fba icon - wcex.hCursor = LoadCursor(NULL, IDC_ARROW); // regular cursor - wcex.hbrBackground = CreateSolidBrush(0); // black video window background - wcex.lpszMenuName = NULL; // no menu - wcex.lpszClassName = szVidWndClass; // video window class (MDI child) + wcex.hInstance = hAppInst; // fba instance handle + wcex.hIcon = LoadIcon(hAppInst, MAKEINTRESOURCE(IDI_APP)); // fba icon + wcex.hCursor = LoadCursor(NULL, IDC_ARROW); // regular cursor + wcex.hbrBackground = static_cast( GetStockObject( BLACK_BRUSH )); // black video window background + wcex.lpszMenuName = NULL; // no menu + wcex.lpszClassName = szVidWndClass; // video window class (MDI child) wcex.hIconSm = LoadIcon(hAppInst, MAKEINTRESOURCE(IDI_APP)); if(!RegisterClassEx(&wcex)) diff --git a/src/burner/win32/scrn.cpp b/src/burner/win32/scrn.cpp index f96bed9a2..4e1ce84d2 100644 --- a/src/burner/win32/scrn.cpp +++ b/src/burner/win32/scrn.cpp @@ -2791,7 +2791,7 @@ static int ScrnRegister() WndClassEx.hInstance = hAppInst; WndClassEx.hIcon = LoadIcon(hAppInst, MAKEINTRESOURCE(IDI_APP)); WndClassEx.hCursor = LoadCursor(NULL, IDC_ARROW); - WndClassEx.hbrBackground = CreateSolidBrush(0); + WndClassEx.hbrBackground = static_cast( GetStockObject ( BLACK_BRUSH )); WndClassEx.lpszClassName = szClass; // Register the window class with the above information: diff --git a/src/burner/win32/sel.cpp b/src/burner/win32/sel.cpp index 2db9ab9f3..65c4a75bd 100644 --- a/src/burner/win32/sel.cpp +++ b/src/burner/win32/sel.cpp @@ -499,7 +499,7 @@ static int SelListMake() if (szSearchString[0]) { TCHAR *StringFound = NULL; TCHAR *StringFound2 = NULL; - TCHAR szDriverName[100]; + TCHAR szDriverName[256]; wcscpy(szDriverName, BurnDrvGetText(DRV_FULLNAME)); for (int k =0; k < 100; k++) { szSearchString[k] = _totlower(szSearchString[k]); diff --git a/src/cpu/z80/z80.cpp b/src/cpu/z80/z80.cpp index 980c59f53..d12440e72 100644 --- a/src/cpu/z80/z80.cpp +++ b/src/cpu/z80/z80.cpp @@ -3505,6 +3505,10 @@ void Z80Reset() void Z80Exit() { + if (SZHVC_add) free(SZHVC_add); + SZHVC_add = NULL; + if (SZHVC_sub) free(SZHVC_sub); + SZHVC_sub = NULL; } int Z80Execute(int cycles)