1
7
Fork
You've already forked debugger.lua
0

fix where source line parser when loaded from luaL_loadstring #89

Merged
ZSaberLv0 merged 3 commits from master into master 2025年03月25日 21:57:21 +01:00
ZSaberLv0 commented 2025年03月10日 15:00:01 +01:00 (Migrated from github.com)
Copy link

assume source input string, and load from C by luaL_loadstring:

---@type number
local a = 1
dbg() -- break here and use `where`
a = a + 1

there are two problems:

  1. the info.currentline would be 5, while the source's empty lines would be ignored, result to length 4
  2. the ---@type 's @ would be used as filename pattern, which was not right

both of these problems would results to Error: Source not available for xxx

assume source input string, and load from C by `luaL_loadstring`: ``` ---@type number local a = 1 dbg() -- break here and use `where` a = a + 1 ``` there are two problems: 1. the `info.currentline` would be `5`, while the `source`'s empty lines would be ignored, result to length `4` 2. the `---@type` 's `@` would be used as filename pattern, which was not right both of these problems would results to `Error: Source not available for xxx`
slembcke commented 2025年03月25日 21:57:06 +01:00 (Migrated from github.com)
Copy link

Is it only possible to trigger this bug from the C API? I tried just using "load" from Lua, but couldn't reproduce it to make a test. Otherwise it seems to pass the rest of the tests?

Good catch on the filename pattern... I know that worked at some point... I wonder when I broke that. whoops... (Always need more tests, sigh)

Is it only possible to trigger this bug from the C API? I tried just using "load" from Lua, but couldn't reproduce it to make a test. Otherwise it seems to pass the rest of the tests? Good catch on the filename pattern... I know that worked at some point... I wonder when I broke that. whoops... (Always need more tests, sigh)
ZSaberLv0 commented 2025年03月26日 02:19:23 +01:00 (Migrated from github.com)
Copy link
dbg = require('debugger')
local f = load([[
 ---@type number
 local a = 1
 dbg() -- break here and use `where`
 a = a + 1
 ]])
f()

also reproduceable in lua, note for the extra emtpy lines and ---@type

``` lua dbg = require('debugger') local f = load([[ ---@type number local a = 1 dbg() -- break here and use `where` a = a + 1 ]]) f() ``` also reproduceable in lua, note for the extra emtpy lines and `---@type`
slembcke commented 2025年03月26日 06:14:40 +01:00 (Migrated from github.com)
Copy link

Hrm, I tried exactly that... Will poke at it again tomorrow.

Hrm, I tried exactly that... Will poke at it again tomorrow.
Sign in to join this conversation.
No reviewers
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
slembcke/debugger.lua!89
Reference in a new issue
slembcke/debugger.lua
No description provided.
Delete branch "master"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?