diff --git a/src/arch/Dialog/DialogDriver_Win32.cpp b/src/arch/Dialog/DialogDriver_Win32.cpp index 967cd7c1f0..d58eb4c38f 100644 --- a/src/arch/Dialog/DialogDriver_Win32.cpp +++ b/src/arch/Dialog/DialogDriver_Win32.cpp @@ -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(sCommand.c_str()), // pointer to command line string NULL, // process security attributes NULL, // thread security attributes false, // handle inheritance flag diff --git a/src/archutils/Win32/CrashHandlerChild.cpp b/src/archutils/Win32/CrashHandlerChild.cpp index b3eefd601f..cd92aae30a 100644 --- a/src/archutils/Win32/CrashHandlerChild.cpp +++ b/src/archutils/Win32/CrashHandlerChild.cpp @@ -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; } diff --git a/src/archutils/Win32/CrashHandlerNetworking.cpp b/src/archutils/Win32/CrashHandlerNetworking.cpp index a137df636c..b71672f2d7 100644 --- a/src/archutils/Win32/CrashHandlerNetworking.cpp +++ b/src/archutils/Win32/CrashHandlerNetworking.cpp @@ -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(buffer), 1024 ); + RString tmp = buffer; + delete[] buffer; + if (iGot < 0) + { break; - sResult += sBuf; + } + + sResult += tmp; } SetProgress( 1.0f ); diff --git a/src/archutils/Win32/ErrorStrings.cpp b/src/archutils/Win32/ErrorStrings.cpp index 7f5b40b3c8..0df20d62e5 100644 --- a/src/archutils/Win32/ErrorStrings.cpp +++ b/src/archutils/Win32/ErrorStrings.cpp @@ -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; } diff --git a/src/archutils/Win32/GetFileInformation.cpp b/src/archutils/Win32/GetFileInformation.cpp index 61d8e4c012..cf9d814023 100644 --- a/src/archutils/Win32/GetFileInformation.cpp +++ b/src/archutils/Win32/GetFileInformation.cpp @@ -22,7 +22,7 @@ bool GetFileVersion( RString sFile, RString &sOut ) RString VersionBuffer( iSize, ' ' ); // Also VC6: - if( !GetFileVersionInfo( const_cast(sFile.c_str()), NULL, iSize, VersionBuffer.GetBuffer() ) ) + if( !GetFileVersionInfo( const_cast(sFile.c_str()), NULL, iSize, const_cast(VersionBuffer.c_str()) ) ) break; WORD *iTrans;