diff options
| author | Suliman Abdulrazzaq <144490671+SulimanAbdulrazzaq@users.noreply.github.com> | 2026-09-29 16:53:17 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-29 09:53:17 -0400 |
| commit | 4f0bac7bd6c2218273347257a157d9f5048ffdb4 (patch) | |
| tree | ee56907530218ba40513ec3ba05ba1f8be64db94 /test/functional/vimscript/executable_spec.lua | |
| parent | 66881af488df8dbfc1cf3851dae65132bc286719 (diff) | |
| download | rneovim-4f0bac7bd6c2218273347257a157d9f5048ffdb4.tar.gz rneovim-4f0bac7bd6c2218273347257a157d9f5048ffdb4.tar.bz2 rneovim-4f0bac7bd6c2218273347257a157d9f5048ffdb4.zip | |
fix(mpack): wrong encoding of integers beyond the int32 range #42085
Problem:
vim.mpack.encode() picks the msgpack size of a negative integer from its
low 32 bits only, so -(2^32 + 5) is written as a negative fixint and
decodes as -5. Numbers beyond +-2^53 trip an assertion in debug builds.
In release builds, numbers below -2^63 or from 2^64 up go through
out-of-range conversions: -1.5 * 2^63 decodes as 2^62.
Solution:
Use int64 whenever the high word is not a sign extension. Encode numbers
outside [-2^63, 2^64), including NaN and infinities, as floats.
AI-assisted
Diffstat (limited to 'test/functional/vimscript/executable_spec.lua')
0 files changed, 0 insertions, 0 deletions