From ef7d5d55cb1dee605128a753a51241b627002d90 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 22 Nov 2021 10:40:06 -0500 Subject: [PATCH] Protect against individual item updates being put into an invalidated list. --- .../paging/FixedSizePagingController.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/paging/lib/src/main/java/org/signal/paging/FixedSizePagingController.java b/paging/lib/src/main/java/org/signal/paging/FixedSizePagingController.java index 5de87cf84d..d799ddb533 100644 --- a/paging/lib/src/main/java/org/signal/paging/FixedSizePagingController.java +++ b/paging/lib/src/main/java/org/signal/paging/FixedSizePagingController.java @@ -142,6 +142,11 @@ class FixedSizePagingController implements PagingController { return; } + if (invalidated) { + Log.w(TAG, "Invalidated! Just before individual change was loaded for position " + position); + return; + } + Data item = dataSource.load(key); if (item == null) { @@ -149,6 +154,11 @@ class FixedSizePagingController implements PagingController { return; } + if (invalidated) { + Log.w(TAG, "Invalidated! Just after individual change was loaded for position " + position); + return; + } + List updatedList = new CompressedList<>(data); updatedList.set(position, item); @@ -165,6 +175,11 @@ class FixedSizePagingController implements PagingController { return; } + if (invalidated) { + Log.w(TAG, "Invalidated! Just before individual insert was loaded for position " + position); + return; + } + Data item = dataSource.load(key); if (item == null) { @@ -172,6 +187,11 @@ class FixedSizePagingController implements PagingController { return; } + if (invalidated) { + Log.w(TAG, "Invalidated! Just after individual insert was loaded for position " + position); + return; + } + List updatedList = new CompressedList<>(data); updatedList.add(position, item);