diff --git a/src/modules/sound/SoundData.cpp b/src/modules/sound/SoundData.cpp index 2a4db4ac6..afaf0d3f7 100644 --- a/src/modules/sound/SoundData.cpp +++ b/src/modules/sound/SoundData.cpp @@ -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) { diff --git a/src/modules/sound/wrap_SoundData.cpp b/src/modules/sound/wrap_SoundData.cpp index e9469d914..5c123e122 100644 --- a/src/modules/sound/wrap_SoundData.cpp +++ b/src/modules/sound/wrap_SoundData.cpp @@ -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; }