Debug output uses local buffer to avoid clashes between threads.
This commit is contained in:
parent
eb20251655
commit
227e2d5541
1 changed files with 4 additions and 11 deletions
|
@ -309,22 +309,15 @@ die(const char *msg, ...)
|
||||||
void
|
void
|
||||||
debug(const char *msg, ...)
|
debug(const char *msg, ...)
|
||||||
{
|
{
|
||||||
#define MAX_DEBUG_BUFSIZE 65536
|
#define MAX_DEBUG_BUFSIZE 16384
|
||||||
va_list args;
|
va_list args;
|
||||||
static uint bufsize = 4096;
|
char buf[MAX_DEBUG_BUFSIZE];
|
||||||
static char *buf = NULL;
|
|
||||||
|
|
||||||
if (!buf)
|
|
||||||
buf = mb_alloc(&root_pool, bufsize);
|
|
||||||
|
|
||||||
va_start(args, msg);
|
va_start(args, msg);
|
||||||
if (dbgf)
|
if (dbgf)
|
||||||
{
|
{
|
||||||
while (bvsnprintf(buf, bufsize, msg, args) < 0)
|
if (bvsnprintf(buf, MAX_DEBUG_BUFSIZE, msg, args) < 0)
|
||||||
if (bufsize >= MAX_DEBUG_BUFSIZE)
|
bug("Extremely long debug output, split it.");
|
||||||
bug("Extremely long debug output, split it.");
|
|
||||||
else
|
|
||||||
buf = mb_realloc(buf, (bufsize *= 2));
|
|
||||||
|
|
||||||
fputs(buf, dbgf);
|
fputs(buf, dbgf);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue