Error instead of crashing when a frequency of 0 is set on a MouseJoint. Resolves issue #1197.

--HG--
branch : minor
This commit is contained in:
Alex Szpakowski
2017-10-08 16:24:48 -03:00
parent ba1d4dc0e9
commit 95adf7e347
2 changed files with 9 additions and 1 deletions
+8
View File
@@ -25,6 +25,8 @@
#include "World.h"
#include "Physics.h"
#include <float.h>
namespace love
{
namespace physics
@@ -78,6 +80,12 @@ float MouseJoint::getMaxForce() const
void MouseJoint::setFrequency(float hz)
{
// This is kind of a crappy check. The frequency is used in an internal
// box2d calculation whose result must be > FLT_EPSILON, but other variables
// go into that calculation...
if (hz <= FLT_EPSILON * 2)
throw love::Exception("MouseJoint frequency must be a positive number.");
joint->SetFrequency(hz);
}
@@ -70,7 +70,7 @@ int w_MouseJoint_setFrequency(lua_State *L)
{
MouseJoint *t = luax_checkmousejoint(L, 1);
float arg1 = (float)luaL_checknumber(L, 2);
t->setFrequency(arg1);
luax_catchexcept(L, [&]() { t->setFrequency(arg1); });
return 0;
}