Fix crash with crossref div and conditional visibility #13995
Merged
+256
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
So I have looked into #13992 with the help of Claude Code, and tested different scenarios. I believe this could fix #13992
Summary
Rendering fails with
attempt to index a nil valuewhen a div has both:#tbl-,#fig-,#lst-).content-visible/.content-hidden)Root Cause
The
content-hidden.luarender function assumesnode.nodeis always a Div and callsel.content. However,parsefiguredivs.luatransforms crossref divs intoFloatRefTargetcustom nodes, which then render to Table/Figure/etc. When the slot content is no longer a Div, calling.contentcrashes.Fix
Check if the slot is still a regular Div before accessing
.content. For transformed elements, return them wrapped inpandoc.Blocks().Test Coverage
Added 8 test files covering various scenarios:
Fixes #13992