-const char errlog_rcs[] = "$Id: errlog.c,v 1.60 2007/11/03 19:03:31 fabiankeil Exp $";
+const char errlog_rcs[] = "$Id: errlog.c,v 1.61 2007/11/04 19:03:01 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/errlog.c,v $
*
* Revisions :
* $Log: errlog.c,v $
+ * Revision 1.61 2007/11/04 19:03:01 fabiankeil
+ * Fix another deadlock Hal spotted and that mysteriously didn't affect FreeBSD.
+ *
* Revision 1.60 2007/11/03 19:03:31 fabiankeil
* - Prevent the Windows GUI from showing the version two times in a row.
* - Stop using the imperative in the "(Re-)Open logfile" message.
/* Cleanup - remove taskbar icon etc. */
TermLogWindow();
-
-#else /* if !defined(_WIN32) || defined(_WIN_CONSOLE) */
- fputs(error_message, logfp);
#endif /* defined(_WIN32) && !defined(_WIN_CONSOLE) */
+ if (logfp != NULL)
+ {
+ fputs(error_message, logfp);
+ }
+
#if defined(unix)
if (pidfile)
{
* settings and that logging is enabled.
* Bail out otherwise.
*/
- if ((0 == (loglevel & debug)) || (logfp == NULL))
+ if ((loglevel != LOG_LEVEL_FATAL) &&
+ ((0 == (loglevel & debug)) || (logfp == NULL)))
{
return;
}
snprintf(tempbuf, sizeof(tempbuf),
"%s Privoxy(%08lx) Fatal error: log_error() failed to allocate buffer memory.\n"
"\nExiting.", timestamp, thread_id);
- assert(NULL != logfp);
- fputs(tempbuf, logfp);
- unlock_logfile();
fatal_error(tempbuf); /* Exit */
}
}
loglevel = LOG_LEVEL_FATAL;
}
- assert(NULL != logfp);
+ assert(NULL != logfp || loglevel == LOG_LEVEL_FATAL);
if (loglevel == LOG_LEVEL_FATAL)
{