FingerMetrics: Try to avoid crash.

When updating finger metrics, make sure we have a FingerState.  I'm
hopeful that this fixes a crash we see, but as I have no repro, I'm
not sure.

BUG=chromium:254786
TEST=unittests pass

Change-Id: I09a7027c47ae909dc5a4803dcffcd42e9d36eec1
Reviewed-on: https://gerrit.chromium.org/gerrit/66424
Reviewed-by: Charlie Mooney <charliemooney@chromium.org>
Tested-by: Andrew de los Reyes <adlr@chromium.org>
Commit-Queue: Andrew de los Reyes <adlr@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/167935
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/168301
diff --git a/src/finger_metrics.cc b/src/finger_metrics.cc
index ab25b57..98558cd 100644
--- a/src/finger_metrics.cc
+++ b/src/finger_metrics.cc
@@ -121,8 +121,12 @@
   // we consider this to be a new gesture starting
   bool gesture_start = (existing_count != previous_count) || new_count > 0;
   for (FingerMetrics& finger: fingers_) {
-    finger.Update(*hwstate.GetFingerState(finger.tracking_id()),
-                  hwstate.timestamp, gesture_start);
+    const FingerState* fs = hwstate.GetFingerState(finger.tracking_id());
+    if (!fs) {
+      Err("Unexpected missing finger state!");
+      continue;
+    }
+    finger.Update(*fs, hwstate.timestamp, gesture_start);
   }
 }