From 795766d027d5cccdbe239c2701274addec023a92 Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Mon, 22 May 2023 12:39:05 +0000 Subject: [PATCH] Avoid saving result from WeakHashMap.size() This value is only valid until the next call on the hash map because it can garbage collect before anything that resizes or accesses the backing table Bug: 266978825 Change-Id: I8c8e2df8c205130da0d3831b88450cc2534f97bb --- core/java/android/view/SurfaceControlRegistry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/view/SurfaceControlRegistry.java b/core/java/android/view/SurfaceControlRegistry.java index 095189ad03a78..67ac811287cbe 100644 --- a/core/java/android/view/SurfaceControlRegistry.java +++ b/core/java/android/view/SurfaceControlRegistry.java @@ -62,7 +62,6 @@ public class SurfaceControlRegistry { private static class DefaultReporter implements Reporter { public void onMaxLayersExceeded(WeakHashMap surfaceControls, int limit, PrintWriter pw) { - final int size = Math.min(surfaceControls.size(), limit); final long now = SystemClock.elapsedRealtime(); final ArrayList> entries = new ArrayList<>(); for (Map.Entry entry : surfaceControls.entrySet()) { @@ -71,6 +70,7 @@ public class SurfaceControlRegistry { // Sort entries by time registered when dumping // TODO: Or should it sort by name? entries.sort((o1, o2) -> (int) (o1.getValue() - o2.getValue())); + final int size = Math.min(entries.size(), limit); pw.println("SurfaceControlRegistry"); pw.println("----------------------");