Fix a bug in vector reverse iteration.

Bug: 73264895

Test: statsd_test and locally built statsd with
     LOCAL_CLANG:=true
     LOCAL_SANITIZE:=address

Change-Id: Ifb8e04c5b4908446f553169846a3226db6e02f54
This commit is contained in:
Yao Chen
2018-02-13 09:37:27 -08:00
parent fc7423bcba
commit db43afcec2

View File

@@ -241,10 +241,10 @@ void LogEvent::init(android_log_context context) {
// So that we can later easily match them with Position=Last matchers.
pos[prevDepth]--;
int path = getEncodedField(pos, prevDepth, false);
for (size_t j = mValues.size() - 1; j >= 0; j--) {
if (mValues[j].mField.getDepth() >= prevDepth &&
mValues[j].mField.getPath(prevDepth) == path) {
mValues[j].mField.decorateLastPos(prevDepth);
for (auto it = mValues.rbegin(); it != mValues.rend(); ++it) {
if (it->mField.getDepth() >= prevDepth &&
it->mField.getPath(prevDepth) == path) {
it->mField.decorateLastPos(prevDepth);
} else {
// Safe to break, because the items are in DFS order.
break;