Error if getting/setting out-of-range samples (issue #674)

This commit is contained in:
Bart van Strien
2013-07-09 15:00:51 +02:00
parent 7e50691b6c
commit aaa301ead2
2 changed files with 18 additions and 4 deletions
+2 -2
View File
@@ -161,7 +161,7 @@ void SoundData::setSample(int i, float sample)
{
// Check range.
if (i < 0 || i >= size/(bits/8))
return;
throw love::Exception("Attempt to set out-of-range sample!");
if (bits == 16)
{
@@ -180,7 +180,7 @@ float SoundData::getSample(int i) const
{
// Check range.
if (i < 0 || i >= size/(bits/8))
return 0;
throw love::Exception("Attempt to get out-of-range sample!");
if (bits == 16)
{
+16 -2
View File
@@ -72,7 +72,14 @@ int w_SoundData_setSample(lua_State *L)
SoundData *sd = luax_checksounddata(L, 1);
int i = (int)lua_tointeger(L, 2);
float sample = (float)lua_tonumber(L, 3);
sd->setSample(i, sample);
try
{
sd->setSample(i, sample);
}
catch (love::Exception &e)
{
return luaL_error(L, "%s", e.what());
}
return 0;
}
@@ -80,7 +87,14 @@ int w_SoundData_getSample(lua_State *L)
{
SoundData *sd = luax_checksounddata(L, 1);
int i = (int)lua_tointeger(L, 2);
lua_pushnumber(L, sd->getSample(i));
try
{
lua_pushnumber(L, sd->getSample(i));
}
catch (love::Exception &e)
{
return luaL_error(L, "%s", e.what());
}
return 1;
}