From: Andrew Bartlett Date: Thu, 11 Jun 2009 08:53:14 +0000 (+1000) Subject: Don't recurse in reopen_logs(). X-Git-Tag: tdb-1.1.5~96 X-Git-Url: http://git.samba.org/samba.git/?p=ira%2Fwip.git;a=commitdiff_plain;h=e5353ce95bbfeab79b6055b1acf07a04b0f3e22a;hp=6372bd695d96d2bfa8a8f902dd0e3830f7b3c2e6 Don't recurse in reopen_logs(). Use the state to avoid recursion in reopen_logs(), as DEBUG() can call this function. Andrew Bartlett --- diff --git a/lib/util/debug.c b/lib/util/debug.c index 578822088fb..58905187ee3 100644 --- a/lib/util/debug.c +++ b/lib/util/debug.c @@ -50,6 +50,7 @@ static struct { int fd; enum debug_logtype logtype; const char *prog_name; + bool reopening_logs; } state; static bool reopen_logs_scheduled; @@ -139,6 +140,9 @@ _PUBLIC_ void reopen_logs(void) { char *fname = NULL; int old_fd = state.fd; + if (state.reopening_logs) { + return; + } switch (state.logtype) { case DEBUG_STDOUT: @@ -150,6 +154,7 @@ _PUBLIC_ void reopen_logs(void) break; case DEBUG_FILE: + state.reopening_logs = true; if (logfile && (*logfile) == '/') { fname = strdup(logfile); } else { @@ -167,6 +172,7 @@ _PUBLIC_ void reopen_logs(void) } else { DEBUG(1, ("Failed to find name for file-based logfile!\n")); } + state.reopening_false = true; break; }