From 868406dbec869ab5870f0284e2e104c45926a9df Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Fri, 16 Nov 2018 18:18:57 -0800 Subject: [PATCH] Fabric: Using non-mutating `at` instead of `[]` for `-[RCTSurfaceTouchHandler _activeTouches]` Summary: Every C++ engineer (except me several months ago) knows that `operator []` can mutate the collection (Yeah! Don't ask), so this is especially dangerous if your hash function is broken (see the previous diff). Reviewed By: mdvacca Differential Revision: D13072805 fbshipit-source-id: 4436a8ff12fb27a57bfb6ee0ff986d7a9a825549 --- React/Fabric/RCTSurfaceTouchHandler.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/React/Fabric/RCTSurfaceTouchHandler.mm b/React/Fabric/RCTSurfaceTouchHandler.mm index 14606914ab80a6..d25653a7457a79 100644 --- a/React/Fabric/RCTSurfaceTouchHandler.mm +++ b/React/Fabric/RCTSurfaceTouchHandler.mm @@ -196,14 +196,14 @@ - (void)_registerTouches:(NSSet *)touches - (void)_updateTouches:(NSSet *)touches { for (UITouch *touch in touches) { - UpdateActiveTouchWithUITouch(_activeTouches[touch], touch, _rootComponentView); + UpdateActiveTouchWithUITouch(_activeTouches.at(touch), touch, _rootComponentView); } } - (void)_unregisterTouches:(NSSet *)touches { for (UITouch *touch in touches) { - const auto &activeTouch = _activeTouches[touch]; + const auto &activeTouch = _activeTouches.at(touch); _identifierPool.enqueue(activeTouch.touch.identifier); _activeTouches.erase(touch); }