summaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorPeng Wu <epico@dhcp-65-116.nay.redhat.com>2010-03-29 18:51:18 +0800
committerPeng Wu <alexepico@gmail.com>2010-05-19 10:09:31 +0800
commit43c4d46425e43907570ca09d880a9f03a90a419c (patch)
tree7032d9bcb0998a4d6a2ff5d214c7bed544dd9c5d /lua
parentc99ffc77af565bbe84981fa8b9fd881a21dd5f42 (diff)
downloadibus-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')
-rw-r--r--lua/lua-plugin-init.c13
-rw-r--r--lua/test.lua5
2 files changed, 16 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;
diff --git a/lua/test.lua b/lua/test.lua
index 8a8e545..9a0ffaa 100644
--- a/lua/test.lua
+++ b/lua/test.lua
@@ -13,3 +13,8 @@ for i,v in ipairs(tab) do print(i, v) end
tab = ime.split_string("aa..bb..cc", "..");
print(ime.join_string(tab, ", "));
+
+print(ime.join_string(nil, ".."));
+print(ime.join_string({}, ".."));
+
+print("test finished...");