From e5353ce95bbfeab79b6055b1acf07a04b0f3e22a Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 11 Jun 2009 18:53:14 +1000 Subject: Don't recurse in reopen_logs(). Use the state to avoid recursion in reopen_logs(), as DEBUG() can call this function. Andrew Bartlett --- lib/util/debug.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib') diff --git a/lib/util/debug.c b/lib/util/debug.c index 578822088f..58905187ee 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; } -- cgit