rojo-rbx / rbx-dom

Roblox DOM and (de)serialization implementation in Rust
MIT License
113 stars 46 forks source link

Fix potential crash in rbx_binary when serializing default SharedString #363

Closed Dekkonot closed 1 year ago

Dekkonot commented 1 year ago

At the moment, when we generate a default for SharedString in rbx_binary, we neglect to add it to the pool of strings that are serialized into an SSTR chunk. This is a problem in of itself, but it also causes our PROP serialization to panic because it directly indexes into a hashmap, assuming this can't happen.

This PR fixes both. We now add the default SharedString to the pool when we generate it, and also emit a proper panic message when a value is not present in the case a bug of this sort crops up again.

Also, I changed a debug log that was spamming the output during serialization because it logged the debug of the entire TypeInfos structure. SharedStringHash now implements Display as well.