diff options
| author | ruki <[email protected]> | 2021-09-21 00:52:15 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-09-21 00:52:15 +0800 |
| commit | bce8f65cb9f619dfa30d7b4b1fa2da9fa56b58e1 (patch) | |
| tree | e05136ba9eaa706a2d2cabab6732a9410b05e297 /core/src/xmake/libc/dataptr.c | |
| parent | 4181bf780192cbf4be257fb7b658cfb390684a12 (diff) | |
improve bytes
Diffstat (limited to 'core/src/xmake/libc/dataptr.c')
| -rw-r--r-- | core/src/xmake/libc/dataptr.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/core/src/xmake/libc/dataptr.c b/core/src/xmake/libc/dataptr.c index a15fc108b..d8d6c6f0d 100644 --- a/core/src/xmake/libc/dataptr.c +++ b/core/src/xmake/libc/dataptr.c @@ -38,18 +38,15 @@ tb_int_t xm_libc_dataptr(lua_State* lua) // check tb_assert_and_check_return_val(lua, 0); - if (xm_lua_ispointer(lua, 1)) - { - tb_pointer_t data = (tb_pointer_t)xm_lua_topointer(lua, 1); - xm_lua_pushpointer(lua, data); - return 1; - } - else if (lua_isstring(lua, 1)) - { - tb_char_t const* cstr = luaL_checkstring(lua, 1); - xm_lua_pushpointer(lua, (tb_pointer_t)cstr); - return 1; - } - xm_libc_return_error(lua, "libc.dataptr(invalid data)!"); + tb_pointer_t data = tb_null; + if (lua_isstring(lua, 1)) + data = (tb_pointer_t)luaL_checkstring(lua, 1); + else if (lua_isnumber(lua, 1)) + data = (tb_pointer_t)(tb_size_t)lua_tointeger(lua, 1); + else if (xm_lua_ispointer(lua, 1)) + data = (tb_pointer_t)xm_lua_topointer(lua, 1); + else xm_libc_return_error(lua, "libc.dataptr(invalid data)!"); + lua_pushinteger(lua, (lua_Integer)data); + return 1; } |
