diff options
| author | historia <[not public]> | 2026-09-18 17:48:26 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-09-18 17:48:26 -0400 |
| commit | 8fe9e3c3fef0049df82281a62afe35dda516dfe2 (patch) | |
| tree | dd269f2c0710f334e19f00a191260ebc46284a90 /internal/engine/tick.go | |
| parent | 194164a77eb4f2479b94c19e6f0e1278ab608781 (diff) | |
| download | thehouseoficarus-8fe9e3c3fef0049df82281a62afe35dda516dfe2.tar.gz | |
fix: close combat ghost, admin traversal, login throttle, journal double-pay, and quality/economy gaps
Diffstat (limited to 'internal/engine/tick.go')
| -rw-r--r-- | internal/engine/tick.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/internal/engine/tick.go b/internal/engine/tick.go index 68dd54f..8c64cdd 100644 --- a/internal/engine/tick.go +++ b/internal/engine/tick.go @@ -4,6 +4,7 @@ package engine import ( "math/rand" + "reflect" "sort" "sync" "time" @@ -171,6 +172,16 @@ func ValuesEqual(a, b any) bool { if aok && bok { return ai == bi } + // == panics when both operands share an uncomparable dynamic type (a + // YAML list or map used as a flag value). Fall back to DeepEqual so a + // tick system cannot panic on authored content. + ta, tb := reflect.TypeOf(a), reflect.TypeOf(b) + if ta != tb { + return false + } + if ta != nil && !ta.Comparable() { + return reflect.DeepEqual(a, b) + } return a == b } |
