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\""; RString sCommand = "notepad \"" + sAppDataDir + PRODUCT_ID + "/Logs/log.txt\"";
CreateProcess( CreateProcess(
NULL, // pointer to name of executable module 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, // process security attributes
NULL, // thread security attributes NULL, // thread security attributes
false, // handle inheritance flag false, // handle inheritance flag
+58 -29
View File
@@ -137,14 +137,15 @@ namespace VDDebugInfo
if( dwFileSize == INVALID_FILE_SIZE ) if( dwFileSize == INVALID_FILE_SIZE )
break; break;
char *pBuf = pctx->sRawBlock.GetBuffer( dwFileSize ); char *buffer = new char[dwFileSize];
if( pBuf == NULL ) if( buffer == NULL )
break; break;
DWORD dwActual; DWORD dwActual;
int iRet = ReadFile(h, pBuf, dwFileSize, &dwActual, NULL); int iRet = ReadFile(h, buffer, dwFileSize, &dwActual, NULL);
CloseHandle(h); CloseHandle(h);
pctx->sRawBlock.ReleaseBuffer( dwActual ); pctx->sRawBlock = buffer;
delete[] buffer;
if( !iRet || dwActual != dwFileSize ) if( !iRet || dwActual != dwFileSize )
break; break;
@@ -326,13 +327,21 @@ namespace SymbolLookup
int iFD = fileno(stdin); int iFD = fileno(stdin);
int iSize; int iSize;
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) ) if (!ReadFromParent(iFD, &iSize, sizeof(iSize)))
{
return "???"; return "???";
}
RString sName; RString sName;
char *pBuf = sName.GetBuffer( iSize ); char *buffer = new char[iSize];
if( !ReadFromParent(iFD, pBuf, iSize) ) if (!ReadFromParent(iFD, buffer, iSize))
return "???"; {
sName.ReleaseBuffer( iSize ); sName = "???";
}
else
{
sName = buffer;
}
delete[] buffer;
return sName; return sName;
} }
@@ -509,19 +518,29 @@ bool ReadCrashDataFromParent( int iFD, CompleteCrashData &Data )
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) ) if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false; return false;
char *pBuf = Data.m_sInfo.GetBuffer( iSize ); char *buffer = new char[iSize];
if( !ReadFromParent(iFD, pBuf, iSize) ) bool wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
RString tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false; return false;
Data.m_sInfo.ReleaseBuffer( iSize ); }
Data.m_sInfo = tmp;
// 3. Read AdditionalLog. // 3. Read AdditionalLog.
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) ) if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false; return false;
pBuf = Data.m_sAdditionalLog.GetBuffer( iSize ); buffer = new char[iSize];
if( !ReadFromParent(iFD, pBuf, iSize) ) wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false; return false;
Data.m_sAdditionalLog.ReleaseBuffer( iSize ); }
Data.m_sAdditionalLog = tmp;
// 4. Read RecentLogs. // 4. Read RecentLogs.
int iCnt = 0; int iCnt = 0;
@@ -531,33 +550,43 @@ bool ReadCrashDataFromParent( int iFD, CompleteCrashData &Data )
{ {
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) ) if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false; return false;
RString sBuf; buffer = new char[iSize];
pBuf = sBuf.GetBuffer( iSize ); wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
if( !ReadFromParent(iFD, pBuf, iSize) ) tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false; return false;
Data.m_asRecent.push_back( sBuf ); }
sBuf.ReleaseBuffer( iSize ); Data.m_asRecent.push_back(tmp);
} }
// 5. Read CHECKPOINTs. // 5. Read CHECKPOINTs.
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) ) if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false; return false;
RString sBuf; buffer = new char[iSize];
pBuf = sBuf.GetBuffer( iSize ); wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
if( !ReadFromParent(iFD, pBuf, iSize) ) tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false; return false;
}
split( sBuf, "$$", Data.m_asCheckpoints ); split(tmp, "$$", Data.m_asCheckpoints);
sBuf.ReleaseBuffer( iSize );
// 6. Read the crashed thread's name. // 6. Read the crashed thread's name.
if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) ) if( !ReadFromParent(iFD, &iSize, sizeof(iSize)) )
return false; return false;
pBuf = Data.m_sCrashedThread.GetBuffer( iSize ); buffer = new char[iSize];
if( !ReadFromParent(iFD, pBuf, iSize) ) wasReadSuccessful = ReadFromParent(iFD, buffer, iSize);
tmp = buffer;
delete[] buffer;
if (!wasReadSuccessful)
{
return false; return false;
Data.m_sCrashedThread.ReleaseBuffer(); }
Data.m_sCrashedThread = tmp;
return true; return true;
} }
@@ -650,13 +650,16 @@ void NetworkPostData::HttpThread()
while( m_pStream->GetState() == NetworkStream::STATE_CONNECTED ) while( m_pStream->GetState() == NetworkStream::STATE_CONNECTED )
{ {
sBuf.clear(); sBuf.clear();
void *p = sBuf.GetBuffer( 1024 ); char * buffer = new char[1024];
int iGot = m_pStream->Read( p, 1024 ); int iGot = m_pStream->Read( static_cast<void *>(buffer), 1024 );
if( iGot >= 0 ) RString tmp = buffer;
sBuf.ReleaseBuffer( iGot ); delete[] buffer;
if( iGot <= 0 ) if (iGot < 0)
{
break; break;
sResult += sBuf; }
sResult += tmp;
} }
SetProgress( 1.0f ); SetProgress( 1.0f );
+4 -4
View File
@@ -34,11 +34,11 @@ RString ConvertWstringToCodepage( wstring s, int iCodePage )
NULL, 0, NULL, FALSE ); NULL, 0, NULL, FALSE );
ASSERT_M( iBytes > 0, werr_ssprintf( GetLastError(), "WideCharToMultiByte" ).c_str() ); 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(), WideCharToMultiByte( CP_ACP, 0, s.data(), s.size(),
ret.GetBuffer( iBytes ), iBytes, NULL, FALSE ); buf, iBytes, NULL, FALSE );
ret.ReleaseBuffer( iBytes ); RString ret( buf );
delete[] buf;
return ret; return ret;
} }
+1 -1
View File
@@ -22,7 +22,7 @@ bool GetFileVersion( RString sFile, RString &sOut )
RString VersionBuffer( iSize, ' ' ); RString VersionBuffer( iSize, ' ' );
// Also VC6: // 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; break;
WORD *iTrans; WORD *iTrans;