diff options
| author | Willem Jan Palenstijn <wjp@usecode.org> | 2015-10-14 14:34:44 +0200 | 
|---|---|---|
| committer | Willem Jan Palenstijn <wjp@usecode.org> | 2015-10-14 14:34:44 +0200 | 
| commit | 9e93324bbfe13fed362d613a9cf16af87dc5b14f (patch) | |
| tree | 7d78dbf7fb1d7b3c58a863dae046d850adbc0dc9 | |
| parent | c7128284fdbbfa0d4a5cbc951b9cdeaf8f9b41e0 (diff) | |
| parent | 21d08656ead6f974f83b0a02b03b105a7cd617a8 (diff) | |
| download | astra-9e93324bbfe13fed362d613a9cf16af87dc5b14f.tar.gz astra-9e93324bbfe13fed362d613a9cf16af87dc5b14f.tar.bz2 astra-9e93324bbfe13fed362d613a9cf16af87dc5b14f.tar.xz astra-9e93324bbfe13fed362d613a9cf16af87dc5b14f.zip | |
Merge pull request #97 from dmpelt/log_valist_fix
Do not reuse va_list when logging both to screen and file
| -rw-r--r-- | src/Logging.cpp | 60 | 
1 files changed, 44 insertions, 16 deletions
| diff --git a/src/Logging.cpp b/src/Logging.cpp index 8290ca0..cd7e3f0 100644 --- a/src/Logging.cpp +++ b/src/Logging.cpp @@ -70,37 +70,65 @@ void CLogger::disable()  void CLogger::debug(const char *sfile, int sline, const char *fmt, ...)  {  	_assureIsInitialized(); -	va_list ap; -	va_start(ap, fmt); -	if(m_bEnabledScreen) clog_debug(sfile,sline,0,fmt,ap); -	if(m_bEnabledFile && m_bFileProvided) clog_debug(sfile,sline,1,fmt,ap); +	va_list ap, apf; +	if(m_bEnabledScreen){ +        va_start(ap, fmt); +        clog_debug(sfile,sline,0,fmt,ap); +        va_end(ap); +    } +	if(m_bEnabledFile && m_bFileProvided){ +        va_start(apf, fmt); +        clog_debug(sfile,sline,1,fmt,apf); +        va_end(apf); +    }  }  void CLogger::info(const char *sfile, int sline, const char *fmt, ...)  {  	_assureIsInitialized(); -	va_list ap; -	va_start(ap, fmt); -	if(m_bEnabledScreen) clog_info(sfile,sline,0,fmt,ap); -	if(m_bEnabledFile && m_bFileProvided) clog_info(sfile,sline,1,fmt,ap); +	va_list ap, apf; +	if(m_bEnabledScreen){ +        va_start(ap, fmt); +        clog_info(sfile,sline,0,fmt,ap); +        va_end(ap); +    } +	if(m_bEnabledFile && m_bFileProvided){ +        va_start(apf, fmt); +        clog_info(sfile,sline,1,fmt,apf); +        va_end(apf); +    }  }  void CLogger::warn(const char *sfile, int sline, const char *fmt, ...)  {  	_assureIsInitialized(); -	va_list ap; -	va_start(ap, fmt); -	if(m_bEnabledScreen) clog_warn(sfile,sline,0,fmt,ap); -	if(m_bEnabledFile && m_bFileProvided) clog_warn(sfile,sline,1,fmt,ap); +	va_list ap, apf; +	if(m_bEnabledScreen){ +        va_start(ap, fmt); +        clog_warn(sfile,sline,0,fmt,ap); +        va_end(ap); +    } +	if(m_bEnabledFile && m_bFileProvided){ +        va_start(apf, fmt); +        clog_warn(sfile,sline,1,fmt,apf); +        va_end(apf); +    }  }  void CLogger::error(const char *sfile, int sline, const char *fmt, ...)  {  	_assureIsInitialized(); -	va_list ap; -	va_start(ap, fmt); -	if(m_bEnabledScreen) clog_error(sfile,sline,0,fmt,ap); -	if(m_bEnabledFile && m_bFileProvided) clog_error(sfile,sline,1,fmt,ap); +	va_list ap, apf; +	if(m_bEnabledScreen){ +        va_start(ap, fmt); +        clog_error(sfile,sline,0,fmt,ap); +        va_end(ap); +    } +	if(m_bEnabledFile && m_bFileProvided){ +        va_start(apf, fmt); +        clog_error(sfile,sline,1,fmt,apf); +        va_end(apf); +    }  }  void CLogger::_setLevel(int id, log_level m_eLevel) | 
