[Project64] Use alloca in log message
This commit is contained in:
parent
226a65cc04
commit
d6b8fe523e
|
@ -1,5 +1,5 @@
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include <windows.h>
|
#include "Platform.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
@ -23,11 +23,6 @@ bool CLog::Open( const char * FileName, LOG_OPEN_MODE mode /* = Log_New */)
|
||||||
}
|
}
|
||||||
|
|
||||||
CPath File(FileName);
|
CPath File(FileName);
|
||||||
if (File.IsRelative())
|
|
||||||
{
|
|
||||||
File = CPath(CPath::MODULE_DIRECTORY,FileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_hLogFile.IsOpen())
|
if (m_hLogFile.IsOpen())
|
||||||
{
|
{
|
||||||
m_hLogFile.Close();
|
m_hLogFile.Close();
|
||||||
|
@ -42,16 +37,6 @@ bool CLog::Open( const char * FileName, LOG_OPEN_MODE mode /* = Log_New */)
|
||||||
}
|
}
|
||||||
m_FileName = (const char *)File;
|
m_FileName = (const char *)File;
|
||||||
m_hLogFile.Seek(0,mode == Log_Append ? CFile::end : CFile::begin);
|
m_hLogFile.Seek(0,mode == Log_Append ? CFile::end : CFile::begin);
|
||||||
|
|
||||||
#ifdef _UNICODE
|
|
||||||
if (m_hLogFile.GetLength() == 0)
|
|
||||||
{
|
|
||||||
WORD wUNICODE = 0xFEFF;
|
|
||||||
|
|
||||||
m_hLogFile.Write(&wUNICODE, 2);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,52 +60,27 @@ void CLog::LogArgs(const char * Message, va_list & args )
|
||||||
{
|
{
|
||||||
if (!m_hLogFile.IsOpen()) { return; }
|
if (!m_hLogFile.IsOpen()) { return; }
|
||||||
|
|
||||||
#ifdef _UNICODE
|
|
||||||
wchar_t* buffer = NULL;
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
size_t nlen = _vscprintf(Message, args) + 1;
|
||||||
int nlen = _vscwprintf( Message, args ) // _vscprintf doesn't count
|
char * Msg = (char *)alloca(nlen * sizeof(char));
|
||||||
+ 1; // terminating '\0'
|
Msg[nlen - 1] = 0;
|
||||||
buffer = new wchar_t[nlen];
|
if (Msg != NULL)
|
||||||
vswprintf( buffer, Message , args );
|
{
|
||||||
Log(buffer);
|
vsprintf(Msg, Message, args);
|
||||||
delete [] buffer;
|
Log(Msg);
|
||||||
buffer = NULL;
|
}
|
||||||
}
|
|
||||||
catch(...)
|
|
||||||
{
|
|
||||||
Log(L"Invalid message format");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (buffer)
|
|
||||||
delete [] buffer;
|
|
||||||
#else
|
|
||||||
char* buffer = NULL;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
char Msg[800];
|
|
||||||
_vsnprintf( Msg, sizeof(Msg) - 5, Message, args );
|
|
||||||
Msg[sizeof(Msg) - 5] = 0;
|
|
||||||
Log(Msg);
|
|
||||||
}
|
}
|
||||||
catch(...)
|
catch(...)
|
||||||
{
|
{
|
||||||
Log("Invalid message format");
|
Log("Invalid message format");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buffer)
|
|
||||||
{
|
|
||||||
delete [] buffer;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CLog::Log( const char * Message )
|
void CLog::Log( const char * Message )
|
||||||
{
|
{
|
||||||
if (!m_hLogFile.IsOpen()) { return; }
|
if (!m_hLogFile.IsOpen()) { return; }
|
||||||
m_hLogFile.Write(Message,(uint32_t)strlen(Message)*sizeof(TCHAR));
|
m_hLogFile.Write(Message,(uint32_t)strlen(Message)*sizeof(char));
|
||||||
if (m_FlushOnWrite)
|
if (m_FlushOnWrite)
|
||||||
{
|
{
|
||||||
m_hLogFile.Flush();
|
m_hLogFile.Flush();
|
||||||
|
@ -148,7 +108,7 @@ void CLog::Log( const char * Message )
|
||||||
uint32_t NextEnter = 0, dwRead = 0;
|
uint32_t NextEnter = 0, dwRead = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
BYTE Data[300];
|
uint8_t Data[300];
|
||||||
uint32_t dwRead;
|
uint32_t dwRead;
|
||||||
|
|
||||||
dwRead = m_hLogFile.Read(Data,sizeof(Data));
|
dwRead = m_hLogFile.Read(Data,sizeof(Data));
|
||||||
|
@ -189,7 +149,7 @@ void CLog::Log( const char * Message )
|
||||||
|
|
||||||
if (!m_hLogFile.Write(Data,dwRead))
|
if (!m_hLogFile.Write(Data,dwRead))
|
||||||
{
|
{
|
||||||
//BreakPoint(__FILEW__,__LINE__);
|
//BreakPoint(__FILE__,__LINE__);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue