Temporary fix for #71. Remove when rust #48251 is fixed in stable.

This commit is contained in:
kyren 2018-02-28 14:43:15 -05:00
parent d7995137d7
commit 5d96ddc52a
2 changed files with 24 additions and 7 deletions

View File

@ -22,6 +22,17 @@ default = ["builtin-lua"]
# * LUA_NUMBER as double
# * LUA_EXTRASPACE is sizeof(void*)
# * LUAI_MAXSTACK is 1000000
# * LUAI_THROW / LUAI_TRY are defined so that they are compatible with jumping
# over Rust stack frames. Rust is, as of the discussion around
# https://github.com/rust-lang/rust/issues/48251, intended to be compatible in
# at least a limited way with C libraries that use setjmp / longjmp error
# handling, but there are some caveats. The linked bug prevents calling into
# C APIs which use setjmp / longjmp handling *at all* on windows with at least
# the 1.24.0 version of the rust compiler, and it remains to be seen but
# potentially the 1.24.1 and 1.25 versions as well. Eventually the fix for
# this will make it into stable rust, but until then there is a fix in the
# bundled version of Lua to use __intrinsic_setjmp on windows instead of
# setjmp to avoid unwinding and triggering rust issue #48251.
builtin-lua = ["gcc"]
[dependencies]

View File

@ -775,9 +775,15 @@
** without modifying the main part of the file.
*/
/*
** rlua modification - fix for #71, temporary until the fix for
** https://github.com/rust-lang/rust/issues/48251 is in stable rust
*/
#if defined(LUA_USE_WINDOWS)
#define LUAI_THROW(L,c) longjmp((c)->b, 1)
#define LUAI_TRY(L,c,a) if (__intrinsic_setjmp((c)->b, NULL) == 0) { a }
#define luai_jmpbuf jmp_buf
#endif
#endif