Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96f12993 authored by Ivan Lozano's avatar Ivan Lozano
Browse files

Fix sanitizer in InputFlinger Reader/Dispatcher.

Refactor for loops that were generating runtime errors on integer
sanitized builds.

Bug: 30969751
Test: Compiles and boots without runtime errors.

Change-Id: I5772333b8060d643c756f229187d02ae5caa7ed7
parent 0c911c0c
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2903,7 +2903,7 @@ void InputDispatcher::setInputWindows(const Vector<sp<InputWindowHandle> >& inpu

        for (size_t d = 0; d < mTouchStatesByDisplay.size(); d++) {
            TouchState& state = mTouchStatesByDisplay.editValueAt(d);
            for (size_t i = 0; i < state.windows.size(); i++) {
            for (size_t i = 0; i < state.windows.size(); ) {
                TouchedWindow& touchedWindow = state.windows.editItemAt(i);
                if (!hasWindowHandleLocked(touchedWindow.windowHandle)) {
#if DEBUG_FOCUS
@@ -2918,7 +2918,9 @@ void InputDispatcher::setInputWindows(const Vector<sp<InputWindowHandle> >& inpu
                        synthesizeCancelationEventsForInputChannelLocked(
                                touchedInputChannel, options);
                    }
                    state.windows.removeAt(i--);
                    state.windows.removeAt(i);
                } else {
                  ++i;
                }
            }
        }
+2 −1
Original line number Diff line number Diff line
@@ -1174,7 +1174,7 @@ void InputDevice::process(const RawEvent* rawEvents, size_t count) {
    // gamepad button presses are handled by different mappers but they should be dispatched
    // in the order received.
    size_t numMappers = mMappers.size();
    for (const RawEvent* rawEvent = rawEvents; count--; rawEvent++) {
    for (const RawEvent* rawEvent = rawEvents; count != 0; rawEvent++) {
#if DEBUG_RAW_EVENTS
        ALOGD("Input event: device=%d type=0x%04x code=0x%04x value=0x%08x when=%" PRId64,
                rawEvent->deviceId, rawEvent->type, rawEvent->code, rawEvent->value,
@@ -1202,6 +1202,7 @@ void InputDevice::process(const RawEvent* rawEvents, size_t count) {
                mapper->process(rawEvent);
            }
        }
        --count;
    }
}