Skip to content

Commit 432fa2f

Browse files
committed
Handle long strings in debug log printf
Fixes #13 - Assertion failed: log.cpp line 114
1 parent 257b1b7 commit 432fa2f

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/Log.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,26 @@ void start(bool enable, const std::string & fileName)
103103

104104
void printf(Level level, const char * fmt, ...)
105105
{
106-
char buf[1024];
106+
char fixedBuffer[1024];
107+
char * buffer = fixedBuffer;
108+
size_t bufferSize = sizeof(fixedBuffer);
107109

108110
va_list ap;
109111
va_start(ap, fmt);
110-
int len = vsnprintf(buf, sizeof(buf), fmt, ap);
112+
int len = vsnprintf(buffer, bufferSize, fmt, ap);
113+
if (len >= (int)bufferSize) {
114+
bufferSize = (size_t)len + 1;
115+
buffer = new char[bufferSize];
116+
len = vsnprintf(buffer, bufferSize, fmt, ap);
117+
assert(len < (int)bufferSize);
118+
}
111119
va_end(ap);
112120

113-
if (len >= (int)sizeof(buf)) {
114-
assert(false);
115-
}
121+
print(level, buffer);
116122

117-
print(level, buf);
123+
if (buffer != fixedBuffer) {
124+
delete[] buffer;
125+
}
118126
}
119127

120128
void print(Level level, const char * str)

0 commit comments

Comments
 (0)