summaryrefslogtreecommitdiff
path: root/core/src/xmake/libc/dataptr.c
diff options
context:
space:
mode:
authorruki <[email protected]>2021-09-21 00:52:15 +0800
committerruki <[email protected]>2021-09-21 00:52:15 +0800
commitbce8f65cb9f619dfa30d7b4b1fa2da9fa56b58e1 (patch)
treee05136ba9eaa706a2d2cabab6732a9410b05e297 /core/src/xmake/libc/dataptr.c
parent4181bf780192cbf4be257fb7b658cfb390684a12 (diff)
improve bytes
Diffstat (limited to 'core/src/xmake/libc/dataptr.c')
-rw-r--r--core/src/xmake/libc/dataptr.c23
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;
}