luci-lib-jsonc: improve handling of integral numeric values
authorJo-Philipp Wich <jo@mein.io>
Wed, 25 Oct 2023 20:35:08 +0000 (22:35 +0200)
committerJo-Philipp Wich <jo@mein.io>
Wed, 25 Oct 2023 20:43:01 +0000 (22:43 +0200)
commit7dfbbca779e97be3672c6df1c805bb06315cf21e
tree5e71c04e71020a330fa05dbfe8148085a6d0da05
parent20daafca6be431029d58fe97a3e1392129bb3b6b
luci-lib-jsonc: improve handling of integral numeric values

Properly deal with integral numeric values exceeding the int32_t range
by replacing the cast logic with more fine grained checks:

 - Lua numbers which are integers in the first place are directly converted
   to JSON integers

 - Finite double Lua numbers which are integral are converted to JSON
   integer values

 - All other numeric values are converted to JSON doubles

This should bring the handling of large integral value in line with the
documented behavior of turning non-fractional Lua numbers into JSON
integers.

Fixes: #6647
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit efcd4879781ee6c428b467052957534a7919d36d)
libs/luci-lib-jsonc/src/jsonc.c