commit e9f567ac2bddd200a077fa78adc6b62bd4e9ed0e
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu May 27 09:21:48 2021 +0200

    Bugfixes for two issues with 1.8.0 seen in the field.

diff --git a/src/main/java/org/distorted/screens/RubikScreenBase.java b/src/main/java/org/distorted/screens/RubikScreenBase.java
index 50165168..ed3d164e 100644
--- a/src/main/java/org/distorted/screens/RubikScreenBase.java
+++ b/src/main/java/org/distorted/screens/RubikScreenBase.java
@@ -183,7 +183,8 @@ abstract class RubikScreenBase extends RubikScreenAbstract implements RubikPreRe
       @Override
       public void run()
         {
-        mLockButton.setImageResource(getLockIcon(act));
+        if( mLockButton!=null )
+          mLockButton.setImageResource(getLockIcon(act));
         }
       });
     }
diff --git a/src/main/java/org/distorted/screens/RubikScreenPlay.java b/src/main/java/org/distorted/screens/RubikScreenPlay.java
index 8a2b7771..82f95c68 100644
--- a/src/main/java/org/distorted/screens/RubikScreenPlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenPlay.java
@@ -464,6 +464,19 @@ public class RubikScreenPlay extends RubikScreenBase
     {
     mObject= preferences.getInt("statePlay_object", DEF_OBJECT);
     mSize  = preferences.getInt("statePlay_size"  , DEF_SIZE  );
+
+    int sizeIndex = ObjectList.getSizeIndex(mObject,mSize);
+    int maxLevel = ObjectList.getMaxLevel(mObject, sizeIndex);
+
+    // This means the app has been upgraded to a new version which swapped the
+    // Object for a new one with larger sizeIndex and now getMaxLevel() returns
+    // 0. Reset the object to default, otherwise we'll get a crash later on.
+
+    if( maxLevel==0 )
+      {
+      mObject = DEF_OBJECT;
+      mSize   = DEF_SIZE;
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
