mirror of
https://github.com/SWG-Source/src.git
synced 2026-07-13 21:01:08 -04:00
enable more thread safety and buffer safety
This commit is contained in:
+2
-2
@@ -54,8 +54,8 @@ if(WIN32)
|
||||
elseif(UNIX)
|
||||
find_package(Curses REQUIRED)
|
||||
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -DDEBUG_LEVEL=2 -DPRODUCTION=0 -m32 -g3 -pipe -O0 -Wall -Wno-overloaded-virtual -Wno-missing-braces -Wno-format -Wno-write-strings -Wno-unknown-pragmas -Wno-uninitialized -Wno-reorder")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDEBUG_LEVEL=0 -DPRODUCTION=1 -m32 -pipe -O3 -funroll-loops -march=native -mtune=native -Wno-overloaded-virtual -Wno-missing-braces -Wno-format -Wno-write-strings -Wno-unknown-pragmas -Wno-uninitialized -Wno-reorder")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_REENTRANT -D_DEBUG -DDEBUG_LEVEL=2 -DPRODUCTION=0 -m32 -g3 -pipe -O0 -Wall -Wno-overloaded-virtual -Wno-missing-braces -Wno-format -Wno-write-strings -Wno-unknown-pragmas -Wno-uninitialized -Wno-reorder")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -D_REENTRANT -DDEBUG_LEVEL=0 -DPRODUCTION=1 -m32 -pipe -O3 -funroll-loops -march=native -mtune=native -Wno-overloaded-virtual -Wno-missing-braces -Wno-format -Wno-write-strings -Wno-unknown-pragmas -Wno-uninitialized -Wno-reorder")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -D_GLIBCXX_USE_CXX11_ABI=0")
|
||||
|
||||
add_definitions(-DLINUX -D_REENTRANT -Dlinux -D_USING_STL -D__STL_NO_BAD_ALLOC -D_GNU_SOURCE -D_XOPEN_SOURCE=500)
|
||||
|
||||
@@ -91,7 +91,7 @@ void FileLogObserver::log(LogMessage const &msg)
|
||||
std::string uniAttach(Unicode::wideToNarrow(msg.getUnicodeAttach()));
|
||||
char tsbuf[16]; // yyyymmddhhmmss (14)
|
||||
|
||||
IGNORE_RETURN( sprintf(tsbuf, UINT64_FORMAT_SPECIFIER, timestamp) );
|
||||
IGNORE_RETURN( snprintf(tsbuf, 16, UINT64_FORMAT_SPECIFIER, timestamp) );
|
||||
IGNORE_RETURN( m_file->write(14, tsbuf) );
|
||||
IGNORE_RETURN( m_file->write(1, ":") );
|
||||
IGNORE_RETURN( m_file->write(static_cast<int>(procId.length()), procId.c_str()) );
|
||||
|
||||
@@ -157,19 +157,20 @@ void LogManager::log(char const *format, ...)
|
||||
if (!s_data)
|
||||
return;
|
||||
// if noone is observing log messages, no need to process them
|
||||
if (s_data->observers.size() && s_data->logging == 1)
|
||||
if (s_data->logging == 1 && s_data->observers.size())
|
||||
{
|
||||
++s_data->logging;
|
||||
static char text[MaxLogMessageLen];
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format); //lint !e746 !e1055
|
||||
IGNORE_RETURN( _vsnprintf(text, sizeof(text), format, ap) );
|
||||
text[sizeof(text)-1] = '\0';
|
||||
size_t sizeOfText = sizeof(text);
|
||||
size_t len = strlen(text);
|
||||
IGNORE_RETURN( _vsnprintf(text, sizeOfText, format, ap) );
|
||||
text[sizeOfText-1] = '\0';
|
||||
// if string was truncated, stick a + on the end
|
||||
if (len == sizeof(text)-1)
|
||||
text[len-1] = '+';
|
||||
if (len == (sizeOfText-1))
|
||||
text[len-1] = '+';
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
@@ -264,7 +265,7 @@ void LogManager::registerObserverType(std::string const &name, LogObserverCreate
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
char const * result = 0;
|
||||
sprintf(key+9, "%d", i);
|
||||
snprintf(key+9, 25, "%d", i);
|
||||
int count = 0;
|
||||
do
|
||||
{
|
||||
|
||||
@@ -123,7 +123,7 @@ void TailFileLogObserver::log(LogMessage const &msg)
|
||||
char tsbuf[16]; // yyyymmddhhmmss (14)
|
||||
|
||||
newLogMessage.clear();
|
||||
IGNORE_RETURN( sprintf(tsbuf, UINT64_FORMAT_SPECIFIER, timestamp) );
|
||||
IGNORE_RETURN( snprintf(tsbuf, 16, UINT64_FORMAT_SPECIFIER, timestamp) );
|
||||
newLogMessage.append(tsbuf);
|
||||
newLogMessage.append(":");
|
||||
newLogMessage.append(procId);
|
||||
|
||||
@@ -37,11 +37,11 @@ Logger::Logger(const char *prefix, int level, unsigned size, bool rollDate)
|
||||
memcpy(&m_lastDateTime, &now, sizeof(tm));
|
||||
if(m_rollDate)
|
||||
{
|
||||
sprintf(buf, "%s%c%2.2d-%2.2d-%2.2d", m_dirPrefix.c_str(), file_sep, (now.tm_mon + 1), now.tm_mday, (now.tm_year % 100));
|
||||
snprintf(buf, 1024, "%s%c%2.2d-%2.2d-%2.2d", m_dirPrefix.c_str(), file_sep, (now.tm_mon + 1), now.tm_mday, (now.tm_year % 100));
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(buf, "%s", m_dirPrefix.c_str());
|
||||
snprintf(buf, 1024, "%s", m_dirPrefix.c_str());
|
||||
}
|
||||
logDir = fopen(buf, "r+");
|
||||
if(errno == ENOENT)
|
||||
@@ -309,7 +309,7 @@ void Logger::rollDate(time_t t)
|
||||
tm now;
|
||||
localtime_r(&t, &now);
|
||||
|
||||
sprintf(buf, "%s%c%2.2d-%2.2d-%2.2d", m_dirPrefix.c_str(), file_sep, (now.tm_mon + 1), now.tm_mday, (now.tm_year % 100));
|
||||
snprintf(buf, 80, "%s%c%2.2d-%2.2d-%2.2d", m_dirPrefix.c_str(), file_sep, (now.tm_mon + 1), now.tm_mday, (now.tm_year % 100));
|
||||
logDir = fopen(buf, "r+");
|
||||
|
||||
if(errno == ENOENT)
|
||||
|
||||
Reference in New Issue
Block a user