Fixed bug: line hooks in stripped functions

Line-hook handling was accessing debug info. without checking whether
it was present.
This commit is contained in:
Roberto Ierusalimschy
2020-07-27 13:23:05 -03:00
parent a585eae6e7
commit ae5b5ba529
2 changed files with 21 additions and 2 deletions

View File

@@ -884,7 +884,7 @@ end
print("testing debug functions on chunk without debug info")
prog = [[-- program to be loaded without debug information
prog = [[-- program to be loaded without debug information (strip)
local debug = require'debug'
local a = 12 -- a local variable
@@ -927,6 +927,23 @@ local f = assert(load(string.dump(load(prog), true)))
assert(f() == 13)
do -- bug in 5.4.0: line hooks in stripped code
local function foo ()
local a = 1
local b = 2
return b
end
local s = load(string.dump(foo, true))
local line = true
debug.sethook(function (e, l)
assert(e == "line")
line = l
end, "l")
assert(s() == 2); debug.sethook(nil)
assert(line == nil) -- hook called withoug debug info for 1st instruction
end
do -- tests for 'source' in binary dumps
local prog = [[
return function (x)