Mercurial > hg > svcore
changeset 938:90e9a3f873cf
endl to qDebug does not seem to be threadsafe
author | Chris Cannam |
---|---|
date | Tue, 01 Jul 2014 11:39:09 +0100 |
parents | 24964a8b31e7 |
children | 5bd05a24e32a |
files | base/Debug.cpp |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/base/Debug.cpp Mon Jun 30 15:02:43 2014 +0100 +++ b/base/Debug.cpp Tue Jul 01 11:39:09 2014 +0100 @@ -34,14 +34,16 @@ static QDebug *debug = 0; static QMutex mutex; static char *prefix; + mutex.lock(); + if (!debug) { prefix = new char[20]; sprintf(prefix, "[%lu]", (unsigned long)QCoreApplication::applicationPid()); QString pfx = ResourceFinder().getUserResourcePrefix(); QDir logdir(QString("%1/%2").arg(pfx).arg("log")); if (!logdir.exists()) logdir.mkpath(logdir.path()); - logFile = new QFile(logdir.path() + "/debug.log"); + logFile = new QFile(logdir.path() + "/sv-debug.log"); if (logFile->open(QIODevice::WriteOnly | QIODevice::Truncate)) { QDebug(QtDebugMsg) << (const char *)prefix << "Opened debug log file " @@ -59,10 +61,12 @@ *debug << endl << (const char *)prefix << "Log started at " << QDateTime::currentDateTime().toString(); } - mutex.unlock(); QDebug &dref = *debug; - return dref << endl << (const char *)prefix; + dref << endl << (const char *)prefix; + + mutex.unlock(); + return dref; } QDebug &