am 0df400ec: Merge "logd: worst uid record watermark part four"
* commit '0df400ec117f5b97673bafa25545c3294c3af636':
logd: worst uid record watermark part four
diff --git a/logd/LogBuffer.cpp b/logd/LogBuffer.cpp
index a93369e..0582a5f 100644
--- a/logd/LogBuffer.cpp
+++ b/logd/LogBuffer.cpp
@@ -238,7 +238,8 @@
}
}
-LogBufferElementCollection::iterator LogBuffer::erase(LogBufferElementCollection::iterator it) {
+LogBufferElementCollection::iterator LogBuffer::erase(
+ LogBufferElementCollection::iterator it, bool engageStats) {
LogBufferElement *e = *it;
log_id_t id = e->getLogId();
LogBufferIteratorMap::iterator f = mLastWorstUid[id].find(e->getUid());
@@ -247,7 +248,11 @@
mLastWorstUid[id].erase(f);
}
it = mLogElements.erase(it);
- stats.subtract(e);
+ if (engageStats) {
+ stats.subtract(e);
+ } else {
+ stats.erase(e);
+ }
delete e;
return it;
@@ -442,9 +447,7 @@
// merge any drops
if (dropped && last.merge(e, dropped)) {
- it = mLogElements.erase(it);
- stats.erase(e);
- delete e;
+ it = erase(it, false);
continue;
}
@@ -510,9 +513,7 @@
stats.drop(e);
e->setDropped(1);
if (last.merge(e, 1)) {
- it = mLogElements.erase(it);
- stats.erase(e);
- delete e;
+ it = erase(it, false);
} else {
last.add(e);
mLastWorstUid[id][e->getUid()] = it;
diff --git a/logd/LogBuffer.h b/logd/LogBuffer.h
index fcb05f5..de76693 100644
--- a/logd/LogBuffer.h
+++ b/logd/LogBuffer.h
@@ -87,7 +87,8 @@
private:
void maybePrune(log_id_t id);
void prune(log_id_t id, unsigned long pruneRows, uid_t uid = AID_ROOT);
- LogBufferElementCollection::iterator erase(LogBufferElementCollection::iterator it);
+ LogBufferElementCollection::iterator erase(
+ LogBufferElementCollection::iterator it, bool engageStats = true);
};
#endif // _LOGD_LOG_BUFFER_H__