summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtest/gtest_tsg_lua_cache_exec.cpp31
-rw-r--r--gtest/script/input_is_null.lua1
-rw-r--r--src/elua_func.cpp11
3 files changed, 26 insertions, 17 deletions
diff --git a/gtest/gtest_tsg_lua_cache_exec.cpp b/gtest/gtest_tsg_lua_cache_exec.cpp
index 7e75c68..c74376d 100644
--- a/gtest/gtest_tsg_lua_cache_exec.cpp
+++ b/gtest/gtest_tsg_lua_cache_exec.cpp
@@ -121,15 +121,21 @@ TEST(elua_execute_script, input_isnull)
elua_vm *L = NULL;
L = elua_create_vm(NULL);
- const char *script = "./script/return_string_normal.lua";
+ const char *script = "./script/input_is_null.lua";
struct elua_script *escript = elua_cache_script_file(L, script, 0);
struct elua_data out;
- out.type = INTEGER;
+ char buff[1024];
+ memset(buff, 0, 1024);
+ out.buff = buff;
+ out.len = 1024;
+ out.type = STRING;
int ret = elua_execute_script(escript, NULL, strlen(data), NULL, NULL, &out);
/* check */
- EXPECT_EQ(-1, ret);
- EXPECT_STREQ(elua_get_last_error_string(L), "[elua_execute_script:1168] input or input_len is invaild.");
+ EXPECT_EQ(0, ret);
+ EXPECT_EQ(5, out.len);
+ EXPECT_EQ(STRING, out.type);
+ EXPECT_STREQ("hello", out.buff);
}
TEST(elua_execute_script, in_len_invaild)
@@ -137,20 +143,25 @@ TEST(elua_execute_script, in_len_invaild)
elua_vm *L = NULL;
L = elua_create_vm(NULL);
- const char *script = "./script/return_string_normal.lua";
+ const char *script = "./script/input_is_null.lua";
struct elua_script *escript = elua_cache_script_file(L, script, 0);
struct elua_data out;
- char *buff = (char *)data;
+ char buff[1024];
+ memset(buff, 0, 1024);
int len = 0;
- out.type = INTEGER;
- int ret = elua_execute_script(escript, buff, len, NULL, NULL, &out);
+ out.buff = buff;
+ out.len = 1024;
+ out.type = STRING;
+ int ret = elua_execute_script(escript, data, len, NULL, NULL, &out);
/* check */
- EXPECT_EQ(-1, ret);
- EXPECT_STREQ(elua_get_last_error_string(L), "[elua_execute_script:1168] input or input_len is invaild.");
+ EXPECT_EQ(0, ret);
+ EXPECT_EQ(5, out.len);
+ EXPECT_EQ(STRING, out.type);
+ EXPECT_STREQ("hello", out.buff);
}
TEST(elua_execute_script, string_expected_but_nil)
diff --git a/gtest/script/input_is_null.lua b/gtest/script/input_is_null.lua
new file mode 100644
index 0000000..5e26eba
--- /dev/null
+++ b/gtest/script/input_is_null.lua
@@ -0,0 +1 @@
+return 5,"hello" \ No newline at end of file
diff --git a/src/elua_func.cpp b/src/elua_func.cpp
index 508063a..287efff 100644
--- a/src/elua_func.cpp
+++ b/src/elua_func.cpp
@@ -1163,12 +1163,6 @@ int elua_execute_script(struct elua_script *escript, const char *input, size_t i
}
elua_private_info_t *elua_info = (elua_private_info_t *)lua_getexdata(L);
- if (input == NULL || input_len == 0)
- {
- snprintf(elua_info->errmsg, 1023, "[%s:%d] input or input_len is invaild.", __FUNCTION__, __LINE__);
- return -1;
- }
-
size_t timeout_ms = escript->timeout_ms;
elua_info->userdata = userdata;
if (ctx != NULL)
@@ -1183,7 +1177,10 @@ int elua_execute_script(struct elua_script *escript, const char *input, size_t i
elua_info = (elua_private_info_t *)lua_getexdata(L);
elua_exception = elua_info->elua_exception;
- elua_set_data(L, elua_info->elua_name, input, input_len);
+ if (input != NULL && input_len != 0)
+ {
+ elua_set_data(L, elua_info->elua_name, input, input_len);
+ }
if (setjmp(*elua_exception) == 0)
{