Skip to content

Commit

Permalink
http/bit: refactor to try bitwise operators in 5.3+
Browse files Browse the repository at this point in the history
Rather than only attempt in Lua 5.3.
This improves Lua 5.4 compatibility.
  • Loading branch information
daurnimator committed Jan 27, 2021
1 parent 20f36e5 commit 402777f
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions http/bit.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,19 @@ The bit operations are only done
This means we can ignore the differences between bit libraries.
]]

-- Lua 5.3 has built-in bit operators, wrap them in a function.
if _VERSION == "Lua 5.3" then
-- Lua 5.1 didn't have `load` or bitwise operators, just let it fall through.
if _VERSION ~= "Lua 5.1" then
-- Lua 5.3+ has built-in bit operators, wrap them in a function.
-- Use debug.getinfo to get correct file+line numbers for loaded snippet
local info = debug.getinfo(1, "Sl")
return assert(load(("\n"):rep(info.currentline+1)..[[return {
local has_bitwise, bitwise = pcall(load(("\n"):rep(info.currentline+1)..[[return {
band = function(a, b) return a & b end;
bor = function(a, b) return a | b end;
bxor = function(a, b) return a ~ b end;
}]], info.source))()
}]], info.source))
if has_bitwise then
return bitwise
end
end

-- The "bit" library that comes with luajit
Expand Down

0 comments on commit 402777f

Please # to comment.