diff options
author | Li Jin <dragon-fly@qq.com> | 2020-07-18 16:45:50 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2020-07-18 16:45:50 +0800 |
commit | 8c596dc1efa8a1267c222b168a4de9c8ba254760 (patch) | |
tree | 699c748e101a48ae267b5f7b19adbfea15f3934e /src/lua/liolib.c | |
parent | 8ab0038c09a79fa8401bb10b7a31d03ef5380417 (diff) | |
download | yuescript-8c596dc1efa8a1267c222b168a4de9c8ba254760.tar.gz yuescript-8c596dc1efa8a1267c222b168a4de9c8ba254760.tar.bz2 yuescript-8c596dc1efa8a1267c222b168a4de9c8ba254760.zip |
fix issue for using return statement with export.
Diffstat (limited to 'src/lua/liolib.c')
-rw-r--r-- | src/lua/liolib.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/lua/liolib.c b/src/lua/liolib.c index 7ac3444..60ab1bf 100644 --- a/src/lua/liolib.c +++ b/src/lua/liolib.c | |||
@@ -52,6 +52,12 @@ static int l_checkmode (const char *mode) { | |||
52 | ** ======================================================= | 52 | ** ======================================================= |
53 | */ | 53 | */ |
54 | 54 | ||
55 | #if !defined(l_checkmodep) | ||
56 | /* By default, Lua accepts only "r" or "w" as mode */ | ||
57 | #define l_checkmodep(m) ((m[0] == 'r' || m[0] == 'w') && m[1] == '\0') | ||
58 | #endif | ||
59 | |||
60 | |||
55 | #if !defined(l_popen) /* { */ | 61 | #if !defined(l_popen) /* { */ |
56 | 62 | ||
57 | #if defined(LUA_USE_POSIX) /* { */ | 63 | #if defined(LUA_USE_POSIX) /* { */ |
@@ -279,6 +285,7 @@ static int io_popen (lua_State *L) { | |||
279 | const char *filename = luaL_checkstring(L, 1); | 285 | const char *filename = luaL_checkstring(L, 1); |
280 | const char *mode = luaL_optstring(L, 2, "r"); | 286 | const char *mode = luaL_optstring(L, 2, "r"); |
281 | LStream *p = newprefile(L); | 287 | LStream *p = newprefile(L); |
288 | luaL_argcheck(L, l_checkmodep(mode), 2, "invalid mode"); | ||
282 | p->f = l_popen(L, filename, mode); | 289 | p->f = l_popen(L, filename, mode); |
283 | p->closef = &io_pclose; | 290 | p->closef = &io_pclose; |
284 | return (p->f == NULL) ? luaL_fileresult(L, 0, filename) : 1; | 291 | return (p->f == NULL) ? luaL_fileresult(L, 0, filename) : 1; |