Additional warnings
[open-adventure.git] / saveresume.c
index f1d52d458423cedd5e01e7bff1dcfc4c45288eff..d4940159216ee17e37087233260647c896e9c175 100644 (file)
@@ -145,13 +145,18 @@ bool is_valid(struct game_t* valgame)
         valgame->lcg_x %= LCG_M;
     }
 
+    /* Check for RNG underflow. Transpose */
+    if (valgame->lcg_x < LCG_M) {
+        valgame->lcg_x = LCG_M + (valgame->lcg_x % LCG_M);
+    }
+
     /*  Bounds check for locations */
     if ( valgame->chloc  < -1 || valgame->chloc  > NLOCATIONS ||
          valgame->chloc2 < -1 || valgame->chloc2 > NLOCATIONS ||
-         valgame->loc    < -1 || valgame->loc    > NLOCATIONS ||
-         valgame->newloc < -1 || valgame->newloc > NLOCATIONS ||
-         valgame->oldloc < -1 || valgame->oldloc > NLOCATIONS ||
-         valgame->oldlc2 < -1 || valgame->oldlc2 > NLOCATIONS) {
+         valgame->loc    <  0 || valgame->loc    > NLOCATIONS ||
+         valgame->newloc <  0 || valgame->newloc > NLOCATIONS ||
+         valgame->oldloc <  0 || valgame->oldloc > NLOCATIONS ||
+         valgame->oldlc2 <  0 || valgame->oldlc2 > NLOCATIONS) {
         return false;
     }
     /*  Bounds check for location arrays */