citizenfx / fivem

The source code for the Cfx.re modification frameworks, such as FiveM, RedM and LibertyM, as well as FXServer.
https://cfx.re/
3.52k stars 2.07k forks source link

fix(msgpack): JSON map conversion error-handling #2825

Open tens0rfl0w opened 4 days ago

tens0rfl0w commented 4 days ago

Goal of this PR

Lua (unlike JS) does not convert table indices to String, which can result in table indices being of various types. Instead of throwing an unhandled exception, we now handle invalid-data more gracefully.

How is this PR achieving the goal

This change mimics the msgpack-c example impl. of map -> JSON conversion with added checks and verbose console errors.

Handling for the following cases has been added:

On error, the map object will get nullified to avoid partial data. While not every case necessarily needs to throw an error, this was done to avoid 'wrong' user-data staying unnoticed.

Different key types (string, int) in the same map are also now supported.

This PR applies to the following area(s)

FiveM

Successfully tested on

Game builds: Not applicable

Platforms: Windows (Client)

Checklist

Fixes issues

/