aboutsummaryrefslogtreecommitdiff
path: root/src/util/basic_macros.h
diff options
context:
space:
mode:
authorGraham Northup <grahamnorthup@yahoo.com>2021-01-29 11:34:00 -0500
committerGitHub <noreply@github.com>2021-01-29 17:34:00 +0100
commite6e5910cb432f0fb25a8af3dc6cb9950fd9a05f5 (patch)
tree48bb974b540225a3da85d9c9da8e063f37a97a32 /src/util/basic_macros.h
parent2760371d8e43327e94d1b4ecb79fbcb56278db90 (diff)
downloadminetest-e6e5910cb432f0fb25a8af3dc6cb9950fd9a05f5.tar.gz
minetest-e6e5910cb432f0fb25a8af3dc6cb9950fd9a05f5.tar.bz2
minetest-e6e5910cb432f0fb25a8af3dc6cb9950fd9a05f5.zip
Clarify key_value_swap's edge case (#10799)
In compiler design especially, leaving behavior as "undefined" is a _strong_ condition that basically states that all possible integrity is violated; it's the kind of thing that happens when, say, dereferencing a pointer with unknown provenance, and most typically leads to a crash, but can result in all sorts of spectacular errors--thus, "it is undefined" how your program will melt down. The pure-Lua implementation of `key_value_swap` does not permit UB _per se_ (assuming the implementation of Lua itself is sound), but does deterministically choose the value to which a key is mapped (the last in visitation order wins--since visitation order is arbitrary, _some_ value _will_ be chosen). Most importantly, the program won't do something wildly unexpected.
Diffstat (limited to 'src/util/basic_macros.h')
0 files changed, 0 insertions, 0 deletions