diff options
author | Peng Wu <epico@dhcp-65-116.nay.redhat.com> | 2010-03-31 17:45:59 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2010-05-19 10:09:32 +0800 |
commit | 870473405c70bb592d80cbe291acf1470dc5468e (patch) | |
tree | fa600448d9eb3e1877a7207c558f8b7e010ad6a0 /lua | |
parent | 3295f6ac1d2b7232926840b1285703eae93f2573 (diff) | |
download | ibus-libpinyin-870473405c70bb592d80cbe291acf1470dc5468e.tar.gz ibus-libpinyin-870473405c70bb592d80cbe291acf1470dc5468e.tar.xz ibus-libpinyin-870473405c70bb592d80cbe291acf1470dc5468e.zip |
add some test cases and safe arguments check.
Diffstat (limited to 'lua')
-rw-r--r-- | lua/lua-plugin-init.c | 12 | ||||
-rw-r--r-- | lua/test.lua | 3 |
2 files changed, 14 insertions, 1 deletions
diff --git a/lua/lua-plugin-init.c b/lua/lua-plugin-init.c index 3f854e5..eaa7ad0 100644 --- a/lua/lua-plugin-init.c +++ b/lua/lua-plugin-init.c @@ -168,12 +168,22 @@ static int ime_split_string(lua_State * L){ guint str_vec_len = 0; int i; const char * sep; const char * str = lua_tolstring(L, 1, NULL); + + if ( NULL == str || '\0' == str[0]){ + lua_newtable(L); + return 1; + } sep = lua_tolstring(L, 2, NULL); - str_vec = g_strsplit(str, sep, 0); + if ( NULL == sep || '\0' == sep[0]){ + lua_newtable(L); + return 1; + } + str_vec = g_strsplit(str, sep, 0); str_vec_len = g_strv_length(str_vec); + lua_createtable(L, str_vec_len, 0); for ( i = 0; i < str_vec_len; ++i){ lua_pushinteger(L, i + 1); diff --git a/lua/test.lua b/lua/test.lua index 2b012e9..166bcb3 100644 --- a/lua/test.lua +++ b/lua/test.lua @@ -11,6 +11,9 @@ for i,v in ipairs(tab) do print(i, v) end tab = ime.split_string(nil, nil); for i,v in ipairs(tab) do print(i, v) end +tab = ime.split_string("aa..bb..cc", nil); +for i,v in ipairs(tab) do print(i, v) end + tab = ime.split_string("aa..bb..cc", ".."); print(ime.join_string(tab, ", ")); |