From 73384567962fa8ec7759dc460e1abbb1d388d77d Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 22 Nov 2010 22:39:06 +0100 Subject: [PATCH] Support os.exit(status|true|false [,close]) (from Lua 5.2). --- src/lib_os.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib_os.c b/src/lib_os.c index 690bffe8..a62fd3b4 100644 --- a/src/lib_os.c +++ b/src/lib_os.c @@ -92,8 +92,15 @@ LJLIB_CF(os_getenv) LJLIB_CF(os_exit) { - exit(lj_lib_optint(L, 1, EXIT_SUCCESS)); - return 0; /* to avoid warnings */ + int status; + if (L->base < L->top && tvisbool(L->base)) + status = boolV(L->base) ? EXIT_SUCCESS : EXIT_FAILURE; + else + status = lj_lib_optint(L, 1, EXIT_SUCCESS); + if (L->base+1 < L->top && tvistruecond(L->base+1)) + lua_close(L); + exit(status); + return 0; /* Unreachable. */ } LJLIB_CF(os_clock)