ThePhrozenKeep / D2MOO

Reimplementation of the Diablo2 game coupled with patching facilities for modders.
MIT License
93 stars 29 forks source link

CLIENTS_RemoveClientFromListWithId may remove from wrong list #154

Closed Lectem closed 4 months ago

Lectem commented 4 months ago

From @Necrolis

At https://github.com/ThePhrozenKeep/D2MOO/blob/6f02d8ff881329e2be7ce34b4f90ae8da0bd1e16/source/D2Game/src/GAME/Clients.cpp#L641, we call CLIENTS_RemoveClientFromListWithId which removes from the the "global" static linked list instead of the game's linked list (D2ClientStrc+0x4AC instead of D2ClientStrc+0x4A8).

The helper function should be told what list to remove from.

Game List Unlink 0533B927 . 8B90 A8040000 MOV EDX,DWORD PTR DS:[EAX+4A8] Global List Unlink 0533B89D . 8B86 AC040000 MOV EAX,DWORD PTR DS:[ESI+4AC] Global List Unlink (By Name) 0533B9CA . 8B82 B0040000 MOV EAX,DWORD PTR DS:[EDX+4B0]

We might want to rename D2ClientStrc+0x4AC or D2ClientStrc+0x4A8 to avoid confusion in the future.