aboutsummaryrefslogtreecommitdiff
path: root/src/lua/modules/audio/je_lua_audio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/modules/audio/je_lua_audio.cpp')
-rw-r--r--src/lua/modules/audio/je_lua_audio.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/lua/modules/audio/je_lua_audio.cpp b/src/lua/modules/audio/je_lua_audio.cpp
index 0f2f713..698d88a 100644
--- a/src/lua/modules/audio/je_lua_audio.cpp
+++ b/src/lua/modules/audio/je_lua_audio.cpp
@@ -78,28 +78,28 @@ namespace JinEngine
AssetDatabase* fs = AssetDatabase::get();
const char* f = luax_checkstring(L, 1);
Buffer b;
- if (!fs->exists(f))
+ try
{
- error(L, "No such image %s", f);
- goto fail;
+ if (!fs->exists(f))
+ throw Exception("No such source file %s.", f);
+ fs->read(f, b);
}
- if (!fs->read(f, b))
+ catch (Exception& e)
{
error(L, "Failed to read source file %s", f);
- goto fail;
+ luax_pushnil(L);
+ return 1;
}
Source* src = Source::createSource((void*)&b, b.size());
if (src == nullptr)
{
error(L, "Failed to decode source file %s", f);
- goto fail;
+ luax_pushnil(L);
+ return 1;
}
Proxy* proxy = (Proxy*)luax_newinstance(L, JIN_AUDIO_SOURCE, sizeof(Proxy));
proxy->bind(new Ref<Source>(src, JIN_AUDIO_SOURCE));
return 1;
- fail:
- luax_pushnil(L);
- return 1;
}
LUA_IMPLEMENT int l_destroy(lua_State* L)