Fix static analysis issues raised in PR #517

This commit is contained in:
tomcw 2017-12-17 19:35:54 +00:00
parent 664edf5b6f
commit 34094f7299
5 changed files with 14 additions and 21 deletions

View File

@ -1336,11 +1336,12 @@ static void DiskLoadSnapshotDriveUnit(YamlLoadHelper& yamlLoadHelper, UINT unit)
g_aFloppyDisk[unit].trackimagedata = yamlLoadHelper.LoadUint(SS_YAML_KEY_TRACK_IMAGE_DATA);
g_aFloppyDisk[unit].trackimagedirty = yamlLoadHelper.LoadUint(SS_YAML_KEY_TRACK_IMAGE_DIRTY);
std::auto_ptr<BYTE> pTrack( new BYTE [NIBBLES_PER_TRACK] );
memset(pTrack.get(), 0, NIBBLES_PER_TRACK);
std::vector<BYTE> track;
track.resize(NIBBLES_PER_TRACK);
memset(&track[0], 0, track.size());
if (yamlLoadHelper.GetSubMap(SS_YAML_KEY_TRACK_IMAGE))
{
yamlLoadHelper.LoadMemory(pTrack.get(), NIBBLES_PER_TRACK);
yamlLoadHelper.LoadMemory(&track[0], NIBBLES_PER_TRACK);
yamlLoadHelper.PopMap();
}
@ -1356,7 +1357,7 @@ static void DiskLoadSnapshotDriveUnit(YamlLoadHelper& yamlLoadHelper, UINT unit)
if (g_aFloppyDisk[unit].trackimage == NULL)
bImageError = true;
else
memcpy(g_aFloppyDisk[unit].trackimage, pTrack.get(), NIBBLES_PER_TRACK);
memcpy(g_aFloppyDisk[unit].trackimage, &track[0], NIBBLES_PER_TRACK);
}
if (bImageError)

View File

@ -192,9 +192,6 @@ bool CImageBase::WriteBlock(ImageInfo* pImageInfo, const int nBlock, LPBYTE pBlo
// Horribly inefficient! (Unzip to a normal file if you want better performance!)
const UINT uNewImageSize = Offset+HD_BLOCK_SIZE;
BYTE* pNewImageBuffer = new BYTE [uNewImageSize];
_ASSERT(pNewImageBuffer);
if (!pNewImageBuffer)
return false;
memcpy(pNewImageBuffer, pImageInfo->pImageBuffer, pImageInfo->uImageSize);
memset(&pNewImageBuffer[pImageInfo->uImageSize], 0, uNewImageSize-pImageInfo->uImageSize); // Should always be HD_BLOCK_SIZE (so this is redundant)
@ -1153,8 +1150,6 @@ ImageError_e CImageHelperBase::CheckGZipFile(LPCTSTR pszImageFilename, ImageInfo
const UINT MAX_UNCOMPRESSED_SIZE = GetMaxImageSize() + 1; // +1 to detect images that are too big
pImageInfo->pImageBuffer = new BYTE[MAX_UNCOMPRESSED_SIZE];
if (!pImageInfo->pImageBuffer)
return eIMAGE_ERROR_BAD_POINTER;
int nLen = gzread(hGZFile, pImageInfo->pImageBuffer, MAX_UNCOMPRESSED_SIZE);
if (nLen < 0 || nLen == MAX_UNCOMPRESSED_SIZE)
@ -1222,8 +1217,6 @@ ImageError_e CImageHelperBase::CheckZipFile(LPCTSTR pszImageFilename, ImageInfo*
return eIMAGE_ERROR_BAD_SIZE;
pImageInfo->pImageBuffer = new BYTE[uFileSize];
if (!pImageInfo->pImageBuffer)
return eIMAGE_ERROR_BAD_POINTER;
nRes = unzOpenCurrentFile(hZipFile);
if (nRes != UNZ_OK)
@ -1352,8 +1345,6 @@ ImageError_e CImageHelperBase::CheckNormalFile(LPCTSTR pszImageFilename, ImageIn
const UINT uDetectSize = GetMinDetectSize(dwSize, &bTempDetectBuffer);
pImageInfo->pImageBuffer = new BYTE [dwSize];
if (!pImageInfo->pImageBuffer)
return eIMAGE_ERROR_BAD_POINTER;
DWORD dwBytesRead;
BOOL bRes = ReadFile(hFile, pImageInfo->pImageBuffer, dwSize, &dwBytesRead, NULL);
@ -1377,9 +1368,6 @@ ImageError_e CImageHelperBase::CheckNormalFile(LPCTSTR pszImageFilename, ImageIn
if (pImageType && dwSize)
{
pImageInfo->pImageBuffer = new BYTE [dwSize];
if (!pImageInfo->pImageBuffer)
return eIMAGE_ERROR_BAD_POINTER;
ZeroMemory(pImageInfo->pImageBuffer, dwSize);
}
}

View File

@ -130,7 +130,7 @@ static void InitRemainderBuffer()
SetClksPerSpkrSample();
g_nRemainderBufferSize = (UINT) g_fClksPerSpkrSample;
if ((double)g_nRemainderBufferSize != g_fClksPerSpkrSample)
if ((double)g_nRemainderBufferSize < g_fClksPerSpkrSample)
g_nRemainderBufferSize++;
g_pRemainderBuffer = new short [g_nRemainderBufferSize];
@ -339,10 +339,10 @@ BYTE __stdcall SpkrToggle (WORD, WORD, BYTE, BYTE, ULONG nCyclesLeft)
if (g_bQuieterSpeaker)
{
// quieten the speaker if 8 bit DAC in use
if (g_nSpeakerData == (SPKR_DATA_INIT >> 2))
if (g_nSpeakerData == (SPKR_DATA_INIT/4)) // NB. Don't shift -ve number right: undefined behaviour (MSDN says: implementation-dependent)
g_nSpeakerData = ~g_nSpeakerData;
else
g_nSpeakerData = SPKR_DATA_INIT>>2;
g_nSpeakerData = SPKR_DATA_INIT/4; // NB. Don't shift -ve number right: undefined behaviour (MSDN says: implementation-dependent)
}
else
{

View File

@ -58,6 +58,12 @@ void uilib_get_general_window_extents(HWND hwnd, int *xsize, int *ysize)
strlen = SendMessage(hwnd, WM_GETTEXTLENGTH, 0, 0);
/* RGJ added cast for AppleWin */
buffer = (char *) malloc(strlen + 1);
if (buffer == NULL) // TC: add null check for AppleWin
{
*xsize = 0;
*ysize = 0;
return;
}
GetWindowText(hwnd, buffer, strlen + 1);
hdc = GetDC(hwnd);

View File

@ -32,8 +32,6 @@
#include <windows.h>
#include <tchar.h>
extern void uilib_get_general_window_extents(HWND hwnd, int *xsize, int *ysize);
typedef struct {
unsigned int idc;
int element_type;