diff --git a/src/modules/math/wrap_Math.cpp b/src/modules/math/wrap_Math.cpp index bdfb48c2c..eedcff6aa 100644 --- a/src/modules/math/wrap_Math.cpp +++ b/src/modules/math/wrap_Math.cpp @@ -71,10 +71,24 @@ int w_randomNormal(lua_State *L) int w_newRandomGenerator(lua_State *L) { + RandomGenerator::State s; + if (lua_gettop(L) > 0) + s = luax_checkrandomstate(L, 1); + RandomGenerator *t = Math::instance.newRandomGenerator(); if (lua_gettop(L) > 0) - t->setState(luax_checkrandomstate(L, 1)); + { + try + { + t->setState(s); + } + catch (love::Exception &e) + { + t->release(); + return luaL_error(L, "%s", e.what()); + } + } luax_newtype(L, "RandomGenerator", MATH_RANDOM_GENERATOR_T, (void *) t); return 1;