lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


This exists since Lua 5.2. The culprit is the exit code on Windows having a different format than on unix/posix. The latter has 0-255 as common ground and mostly anything else is undefined. But on Windows the exit code is a 32bit signed integer.

Now this code: https://github.com/lua/lua/blob/f59e6a93c0ad38a27a420e51abf8f13d962446b5/lauxlib.c#L276-L277
Treats -1 as a special case, and goes looking for an error message here: https://github.com/lua/lua/blob/f59e6a93c0ad38a27a420e51abf8f13d962446b5/lauxlib.c#L241-L247

This results in “No error” in the windows case of -1, since it is a valid exit code.

Test output (the actual exit code used, followed by the 3 results of os.execute):
-6	nil	exit	-6
-5	nil	exit	-5
-4	nil	exit	-4
-3	nil	exit	-3
-2	nil	exit	-2
-1	nil	No error	0
0	true	exit	0
1	nil	exit	1
2	nil	exit	2
3	nil	exit	3
4	nil	exit	4
5	nil	exit	5

On Windows the -1 case should have been “-1	nil	exit -1”

regards
Thijs