From 3c2a53d58f658b78ac9103b825f713e27cde8b4d Mon Sep 17 00:00:00 2001 From: u6th9d Date: Tue, 9 Oct 2018 16:46:13 +0800 Subject: [PATCH] Update Logger.cpp Should not lose the log :) --- src/Logger.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/Logger.cpp b/src/Logger.cpp index 718d5e5..84eab64 100644 --- a/src/Logger.cpp +++ b/src/Logger.cpp @@ -188,20 +188,18 @@ LogUnit* Logger::getLogUnit() } } else { std::unique_lock lck(mMtx); - if (!mFree.empty()) { - log = mFree.back(); - mFree.resize(mFree.size() - 1); - } else if (mLogUnitCnt < mFree.capacity()) { - ++mLogUnitCnt; - } else { - while (mFree.empty() && !mStop) { - mCond.wait(lck); - } + while (true) { if (!mFree.empty()) { log = mFree.back(); mFree.resize(mFree.size() - 1); + break; + } else if (mLogUnitCnt < mFree.capacity()) { + ++mLogUnitCnt; + break; } else { - return nullptr; + while (mFree.empty() && !mStop) { + mCond.wait(lck); + } } } }