diff options
author | Benoit Germain <bnt period germain arrobase gmail period com> | 2014-02-18 10:21:12 +0100 |
---|---|---|
committer | Benoit Germain <bnt period germain arrobase gmail period com> | 2014-02-18 10:21:12 +0100 |
commit | c662c34aaf279c9fedd5bee499c57d9986801538 (patch) | |
tree | 931ddb29c1a5a1ebd6d58e221cf663248caf34c7 /src/tools.c | |
parent | 48517ca661895a0c70093e78f165866cb9363206 (diff) | |
download | lanes-c662c34aaf279c9fedd5bee499c57d9986801538.tar.gz lanes-c662c34aaf279c9fedd5bee499c57d9986801538.tar.bz2 lanes-c662c34aaf279c9fedd5bee499c57d9986801538.zip |
more graceful handling of out-of-memory errors
* raise an error instead of dereferencing a NULL pointer on deep
userdata creation and lane struct creation
Diffstat (limited to 'src/tools.c')
-rw-r--r-- | src/tools.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/tools.c b/src/tools.c index d149f9b..81ddf5c 100644 --- a/src/tools.c +++ b/src/tools.c | |||
@@ -1074,7 +1074,10 @@ int luaG_newdeepuserdata( lua_State* L, luaG_IdFunction idfunc) | |||
1074 | { | 1074 | { |
1075 | int oldtop = lua_gettop( L); | 1075 | int oldtop = lua_gettop( L); |
1076 | prelude->deep = idfunc( L, eDO_new); | 1076 | prelude->deep = idfunc( L, eDO_new); |
1077 | ASSERT_L( prelude->deep); | 1077 | if( prelude->deep == NULL) |
1078 | { | ||
1079 | luaL_error( L, "idfunc(eDO_new) failed to create deep userdata (out of memory)"); | ||
1080 | } | ||
1078 | 1081 | ||
1079 | if( lua_gettop( L) - oldtop != 0) | 1082 | if( lua_gettop( L) - oldtop != 0) |
1080 | { | 1083 | { |