diff options
author | Peng Wu <epico@dhcp-65-116.nay.redhat.com> | 2010-03-29 18:51:18 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2010-05-19 10:09:31 +0800 |
commit | 43c4d46425e43907570ca09d880a9f03a90a419c (patch) | |
tree | 7032d9bcb0998a4d6a2ff5d214c7bed544dd9c5d /lua/lua-plugin-init.c | |
parent | c99ffc77af565bbe84981fa8b9fd881a21dd5f42 (diff) | |
download | ibus-libpinyin-43c4d46425e43907570ca09d880a9f03a90a419c.tar.gz ibus-libpinyin-43c4d46425e43907570ca09d880a9f03a90a419c.tar.xz ibus-libpinyin-43c4d46425e43907570ca09d880a9f03a90a419c.zip |
add more test case and fixes join_string with empty table.
Diffstat (limited to 'lua/lua-plugin-init.c')
-rw-r--r-- | lua/lua-plugin-init.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lua/lua-plugin-init.c b/lua/lua-plugin-init.c index 5ee0f08..d42e68b 100644 --- a/lua/lua-plugin-init.c +++ b/lua/lua-plugin-init.c @@ -65,10 +65,17 @@ static int ime_join_string(lua_State* L){ if ( !lua_istable(L, 1) ) return 0; - sep = lua_tolstring(L, 2, NULL); + sep = lua_tolstring(L, 2, NULL); + vec_len = lua_objlen(L, 1); + + if ( 0 == vec_len ){ + lua_pop(L, 2); + lua_pushliteral(L, ""); + return 1; + } luaL_buffinit(L, &buf); - vec_len = lua_objlen(L, 1); + for ( i = 1; i < vec_len; ++i){ lua_pushinteger(L, i); lua_gettable(L, 1); @@ -84,6 +91,8 @@ static int ime_join_string(lua_State* L){ str = lua_tolstring(L, 3, NULL); luaL_addstring(&buf, str); lua_pop(L, 1); + /* remove the args. */ + lua_pop(L, 2); luaL_pushresult(&buf); return 1; |