From f3c967828725751efa4a1871ab1c99a4381e15c3 Mon Sep 17 00:00:00 2001 From: Adrian Ulrich Date: Wed, 7 Oct 2015 21:11:13 +0200 Subject: [PATCH] Improve reading corrupted state files Zero-out invalid shuffle and finish modes --- src/ch/blinkenlights/android/vanilla/SongTimeline.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ch/blinkenlights/android/vanilla/SongTimeline.java b/src/ch/blinkenlights/android/vanilla/SongTimeline.java index 9489b683..9b1430af 100644 --- a/src/ch/blinkenlights/android/vanilla/SongTimeline.java +++ b/src/ch/blinkenlights/android/vanilla/SongTimeline.java @@ -380,9 +380,15 @@ public final class SongTimeline { } } - mCurrentPos = Math.min(mSongs == null ? 0 : mSongs.size(), in.readInt()); + mCurrentPos = Math.min(mSongs == null ? 0 : mSongs.size(), Math.abs(in.readInt())); mFinishAction = in.readInt(); mShuffleMode = in.readInt(); + + // Guard against corruption + if (mFinishAction < 0 || mFinishAction >= FINISH_ICONS.length) + mFinishAction = 0; + if (mShuffleMode < 0 || mShuffleMode >= SHUFFLE_ICONS.length) + mShuffleMode = 0; } }