X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;ds=sidebyside;f=saveresume.c;h=d4940159216ee17e37087233260647c896e9c175;hb=5cdaa301dcf6ececc1d2a9e340d8da698a9f55d8;hp=f1d52d458423cedd5e01e7bff1dcfc4c45288eff;hpb=9e2cb3c19196a26af8e20803314f42b69dc0e014;p=open-adventure.git diff --git a/saveresume.c b/saveresume.c index f1d52d4..d494015 100644 --- a/saveresume.c +++ b/saveresume.c @@ -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 */