From e9bd122f8adedd3bf3fce7657d785f997da52709 Mon Sep 17 00:00:00 2001 From: Robin Sommer Date: Fri, 22 Jul 2011 13:36:21 -0700 Subject: [PATCH] Fixing potential segfault in DebugLogger. The Reporter may not have been initialized yet when the logger ctor runs. --- src/DebugLogger.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/DebugLogger.cc b/src/DebugLogger.cc index 326371d981..adf06b7d67 100644 --- a/src/DebugLogger.cc +++ b/src/DebugLogger.cc @@ -25,10 +25,19 @@ DebugLogger::DebugLogger(const char* filename) if ( filename ) { filename = log_file_name(filename); - + file = fopen(filename, "w"); if ( ! file ) - reporter->FatalError("can't open '%s' for debugging output.", filename); + { + // The reporter may not be initialized here yet. + if ( reporter ) + reporter->FatalError("can't open '%s' for debugging output", filename); + else + { + fprintf(stderr, "can't open '%s' for debugging output\n", filename); + exit(1); + } + } setvbuf(file, NULL, _IOLBF, 0); }