mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-05-06 14:24:15 +02:00
fix(savedata): skip bookshelf read on pre-G1 clients
Bookshelf was introduced after Forward.5 (verified: F5 mhfo.dll has no Bookshelf symbols, modern clients export .?AVBookshelfForm@@). For F4/F5/S6 the configured pointers place the bookshelf region past the end of the smaller save blob, causing a slice-bounds panic on every MSG_MHF_SAVEDATA and rolling characters back to creation state. The read is now bounds-checked and skipped when absent; bookshelf state is persisted via house packets into user_binary.bookshelf, so leaving BookshelfData nil is safe.
This commit is contained in:
@@ -42,6 +42,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
- Dashboard channel ports now reflect the actual configured `Entrance.Entries[].Channels[].Port` instead of a hardcoded `54000 + server_id`.
|
||||
- Fixed backup recovery panic: `recoverFromBackups` now rejects decompressed backup data smaller than the minimum save layout size, preventing a slice-bounds panic when nullcomp passes through garbage bytes as "already decompressed" data ([#182](https://github.com/Mezeporta/Erupe/pull/182)).
|
||||
- Fixed save-time panic and character rollback on Forward.5 / Forward.4 / Season 6.0 clients: bookshelf was introduced after Forward.5 (verified against the F5 client binary), so the configured pointers overshoot the smaller save blob. The bookshelf read is now bounds-checked and skipped when absent; persistence via house packets is unaffected.
|
||||
|
||||
## [9.3.2] - 2026-04-06
|
||||
|
||||
|
||||
Reference in New Issue
Block a user