Deserialization: Restore backwards compat #12519
Merged
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.
#11427 deliberately stopped not throwing an error when a non-string is passed to
minetest.deserialize
. Mods however seem to rely on this (unfortunately it's hard to [sem]grep for this since this depends heavily on program logic). The first case of this causing a crash was with petz, where it lead to an issue in petz code being discovered & fixed, which prompted me to write this patch. The second case was with technic_plus, a rather well-written mod which relied on passingnil
returningnil
, which prompted me to open this PR. Both crashes have since been fixed, but widespread adoption of 5.6.0 might cause more crashes to pop up.This PR now changes the hard error into:
nil
is passed, and returnsnil
plus an error message as before