diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp index fbed83b76..ded6c8cc7 100644 --- a/logd/LogBuffer.cpp +++ b/logd/LogBuffer.cpp @@ -1142,6 +1142,10 @@ log_time LogBuffer::flushTo(SocketClient* reader, const log_time& start, continue; } + if (element->getRealTime() <= start) { + continue; + } + // NB: calling out to another object with wrlock() held (safe) if (filter) { int ret = (*filter)(element, arg); @@ -1168,10 +1172,11 @@ log_time LogBuffer::flushTo(SocketClient* reader, const log_time& start, unlock(); // range locking in LastLogTimes looks after us - log_time next = element->flushTo(reader, this, privileged, sameTid); + max = element->flushTo(reader, this, privileged, sameTid); - if (next == element->FLUSH_ERROR) return next; - if (next > max) max = next; + if (max == element->FLUSH_ERROR) { + return max; + } skip = maxSkip; rdlock();