oxen-io / session-android

A private messenger for Android.
https://getsession.org
GNU General Public License v3.0
1.73k stars 165 forks source link

[SES-1889] Fix IndexOutOfBounds in MediaPreview #1481

Closed bemusementpark closed 1 month ago

bemusementpark commented 1 month ago

The issue is a crash that occurs onResume we load the cursor again and then set the pager position and that triggers viewPagerListener, but the listener is reused and holds an index which may or may not be valid. As range checks only check index is positive, we might have an index that exceeds the bounds, and if leftIsRecent is set then its reversed. This commit fixes the issue and adds some additional info if we do throw.

It'd be good to rewrite this class in the near future

Th clamping in onLoadFinished also improves an issue when the Activity is started wiyh an inalid index causing the pager to not be populated at all when the activity is opened