File tree Expand file tree Collapse file tree 1 file changed +14
-6
lines changed
Expand file tree Collapse file tree 1 file changed +14
-6
lines changed Original file line number Diff line number Diff line change @@ -103,18 +103,26 @@ void start(bool enable, const std::string & fileName)
103103
104104void 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
120128void print (Level level, const char * str)
You can’t perform that action at this time.
0 commit comments