Guard against a null chunk in GenPonds' pond search - #52
Open
Zaldaryon wants to merge 1 commit into
Open
Conversation
The fallback lookup on the line above can return null, and the very next statement calls Unpack() on it unconditionally, so the pond search NREs when a neighbouring column is absent or mid-unload. This is reachable with MaxWorldgenThreads above 1, where columns are loaded and unloaded around the searching column while it runs. The sibling lookup six lines below already handles exactly this by returning, so this just makes the two consistent.
Zaldaryon
force-pushed
the
fix/genponds-null-chunk-guard
branch
from
July 27, 2026 19:26
fa2d570 to
c3ce029
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
GenPonds.genPondlooks up the chunk it is about to write into, falls back to a second lookup when the first misses, and then callsUnpack()on the result without checking it:The fallback can return null, so this throws a
NullReferenceExceptionwhen a neighbouring column is absent or being unloaded while the pond search walks into it. It is reachable withMaxWorldgenThreadsabove 1, where columns come and go around the one currently generating.The sibling lookup six lines below already handles the same situation by bailing out:
This adds the same guard to the first lookup, so the two are consistent. One line, and it only changes behaviour on a path that currently throws.
Found while running world generation with several worldgen threads. Related, though a separate bug: anegostudios/VintageStory-Issues#9871.