diff --git a/src/modules/graphics/opengl/wrap_Graphics.cpp b/src/modules/graphics/opengl/wrap_Graphics.cpp index d9a074d1a..49273e6da 100644 --- a/src/modules/graphics/opengl/wrap_Graphics.cpp +++ b/src/modules/graphics/opengl/wrap_Graphics.cpp @@ -438,7 +438,7 @@ int w_newParticleSystem(lua_State *L) Image *image = luax_checkimage(L, 1); lua_Number size = luaL_optnumber(L, 2, 1000); ParticleSystem *t = 0; - if (size < 1.0 || size > LOVE_UINT32_MAX) + if (size < 1.0 || size > ParticleSystem::MAX_PARTICLES) return luaL_error(L, "Invalid ParticleSystem size"); EXCEPT_GUARD(t = instance->newParticleSystem(image, size);) diff --git a/src/modules/graphics/opengl/wrap_ParticleSystem.cpp b/src/modules/graphics/opengl/wrap_ParticleSystem.cpp index 6b053134e..7618e8665 100644 --- a/src/modules/graphics/opengl/wrap_ParticleSystem.cpp +++ b/src/modules/graphics/opengl/wrap_ParticleSystem.cpp @@ -165,15 +165,20 @@ int w_ParticleSystem_setAreaSpread(lua_State *L) { ParticleSystem *t = luax_checkparticlesystem(L, 1); - ParticleSystem::AreaSpreadDistribution distribution; - const char *str = luaL_checkstring(L, 2); - if (!ParticleSystem::getConstant(str, distribution)) - return luaL_error(L, "Invalid distribution: '%s'", str); + ParticleSystem::AreaSpreadDistribution distribution = ParticleSystem::DISTRIBUTION_NONE; + float x = 0.f, y = 0.f; - float x = (float)luaL_checknumber(L, 3); - float y = (float)luaL_checknumber(L, 4); - if (x < 0.0f || y < 0.0f) - return luaL_error(L, "Invalid area spread parameters (must be >= 0)"); + const char *str = lua_isnoneornil(L, 2) ? 0 : luaL_checkstring(L, 2); + if (str && !ParticleSystem::getConstant(str, distribution)) + return luaL_error(L, "Invalid particle distribution: %s", str); + + if (distribution != ParticleSystem::DISTRIBUTION_NONE) + { + x = (float) luaL_checknumber(L, 3); + y = (float) luaL_checknumber(L, 4); + if (x < 0.0f || y < 0.0f) + return luaL_error(L, "Invalid area spread parameters (must be >= 0)"); + } t->setAreaSpread(distribution, x, y); return 0; diff --git a/src/modules/window/wrap_Window.cpp b/src/modules/window/wrap_Window.cpp index 24eb14b66..93133ec88 100644 --- a/src/modules/window/wrap_Window.cpp +++ b/src/modules/window/wrap_Window.cpp @@ -190,7 +190,7 @@ int w_setFullscreen(lua_State *L) bool fullscreen = luax_toboolean(L, 1); Window::FullscreenType fstype = Window::FULLSCREEN_TYPE_MAX_ENUM; - const char *typestr = lua_isnoneornil(L, 2) ? 0 : lua_tostring(L, 2); + const char *typestr = lua_isnoneornil(L, 2) ? 0 : luaL_checkstring(L, 2); if (typestr && !Window::getConstant(typestr, fstype)) return luaL_error(L, "Invalid fullscreen type: %s", typestr);