NOW all of the buffer calls should be dead.

This commit is contained in:
Jason Felds
2015-09-19 20:06:33 -04:00
parent f112234655
commit 8512665f27
5 changed files with 73 additions and 41 deletions
+1 -1
View File
@@ -166,7 +166,7 @@ static BOOL CALLBACK ErrorWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lP
RString sCommand = "notepad \"" + sAppDataDir + PRODUCT_ID + "/Logs/log.txt\"";
CreateProcess(
NULL, // pointer to name of executable module
sCommand.GetBuffer(), // pointer to command line string
const_cast<char *>(sCommand.c_str()), // pointer to command line string
NULL, // process security attributes
NULL, // thread security attributes
false, // handle inheritance flag
+58 -29
View File
@@ -137,14 +137,15 @@ namespace VDDebugInfo
if( dwFileSize == INVALID_FILE_SIZE )
break;
char *pBuf = pctx->sRawBlock.GetBuffer( dwFileSize );
if( pBuf == NULL )
char *buffer = new char[dwFileSize];
if( buffer == NULL )
break;
DWORD dwActual;
int iRet = ReadFile(h, pBuf, dwFileSize, &dwActual, NULL);
int iRet = ReadFile(h, buffer, dwFileSize, &dwActual, NULL);
CloseHandle(h);
pctx->sRawBlock.ReleaseBuffer( dwActual );
pctx->sRawBlock = buffer;
delete[] buffer;
if( !iRet || dwActual != dwFileSize )
break;
@@ -326,13 +327,21 @@ namespace SymbolLookup
int iFD = fileno(stdin);
int iSize;
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
if (!ReadFromParent(iFD, &iSize, sizeof(iSize)))
{
return "???";
}
RString sName;
char *pBuf = sName.GetBuffer( iSize );
if( !ReadFromParent(iFD, pBuf, iSize) )
return "???";
sName.ReleaseBuffer( iSize );
char *buffer = new char[iSize];
if (!ReadFromParent(iFD, buffer, iSize))
{
sName = "???";
}
else
{
sName = buffer;
}
delete[] buffer;
return sName;
}
@@ -509,19 +518,29 @@ bool ReadCrashDataFromParent( int iFD, CompleteCrashData &Data )
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false;
char *pBuf = Data.m_sInfo.GetBuffer( iSize );
if( !ReadFromParent(iFD, pBuf, iSize) )
char *buffer = new char[iSize];
bool wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
RString tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false;
Data.m_sInfo.ReleaseBuffer( iSize );
}
Data.m_sInfo = tmp;
// 3. Read AdditionalLog.
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false;
pBuf = Data.m_sAdditionalLog.GetBuffer( iSize );
if( !ReadFromParent(iFD, pBuf, iSize) )
buffer = new char[iSize];
wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false;
Data.m_sAdditionalLog.ReleaseBuffer( iSize );
}
Data.m_sAdditionalLog = tmp;
// 4. Read RecentLogs.
int iCnt = 0;
@@ -531,33 +550,43 @@ bool ReadCrashDataFromParent( int iFD, CompleteCrashData &Data )
{
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false;
RString sBuf;
pBuf = sBuf.GetBuffer( iSize );
if( !ReadFromParent(iFD, pBuf, iSize) )
buffer = new char[iSize];
wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false;
Data.m_asRecent.push_back( sBuf );
sBuf.ReleaseBuffer( iSize );
}
Data.m_asRecent.push_back(tmp);
}
// 5. Read CHECKPOINTs.
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false;
RString sBuf;
pBuf = sBuf.GetBuffer( iSize );
if( !ReadFromParent(iFD, pBuf, iSize) )
buffer = new char[iSize];
wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false;
split( sBuf, "$$", Data.m_asCheckpoints );
sBuf.ReleaseBuffer( iSize );
}
split(tmp, "$$", Data.m_asCheckpoints);
// 6. Read the crashed thread's name.
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false;
pBuf = Data.m_sCrashedThread.GetBuffer( iSize );
if( !ReadFromParent(iFD, pBuf, iSize) )
buffer = new char[iSize];
wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false;
Data.m_sCrashedThread.ReleaseBuffer();
}
Data.m_sCrashedThread = tmp;
return true;
}
@@ -650,13 +650,16 @@ void NetworkPostData::HttpThread()
while( m_pStream->GetState() == NetworkStream::STATE_CONNECTED )
{
sBuf.clear();
void *p = sBuf.GetBuffer( 1024 );
int iGot = m_pStream->Read( p, 1024 );
if( iGot >= 0 )
sBuf.ReleaseBuffer( iGot );
if( iGot <= 0 )
char * buffer = new char[1024];
int iGot = m_pStream->Read( static_cast<void *>(buffer), 1024 );
RString tmp = buffer;
delete[] buffer;
if (iGot < 0)
{
break;
sResult += sBuf;
}
sResult += tmp;
}
SetProgress( 1.0f );
+4 -4
View File
@@ -34,11 +34,11 @@ RString ConvertWstringToCodepage( wstring s, int iCodePage )
NULL, 0, NULL, FALSE );
ASSERT_M( iBytes > 0, werr_ssprintf( GetLastError(), "WideCharToMultiByte" ).c_str() );
RString ret;
char * buf = new char[iBytes];
WideCharToMultiByte( CP_ACP, 0, s.data(), s.size(),
ret.GetBuffer( iBytes ), iBytes, NULL, FALSE );
ret.ReleaseBuffer( iBytes );
buf, iBytes, NULL, FALSE );
RString ret( buf );
delete[] buf;
return ret;
}
+1 -1
View File
@@ -22,7 +22,7 @@ bool GetFileVersion( RString sFile, RString &sOut )
RString VersionBuffer( iSize, ' ' );
// Also VC6:
if( !GetFileVersionInfo( const_cast<char *>(sFile.c_str()), NULL, iSize, VersionBuffer.GetBuffer() ) )
if( !GetFileVersionInfo( const_cast<char *>(sFile.c_str()), NULL, iSize, const_cast<char *>(VersionBuffer.c_str()) ) )
break;
WORD *iTrans;