Skip to content

Draft: ntdll: Fix SetCurrentDirectory behaviour on trailing periods

Lois Gomez requested to merge loisgomez/wine:fix-vgsoh into master

Context:

Vanguard Saga of Heroes is an MMORPG that was closed years ago by SOE. However the game is still alive in the emulator scene at https://vgoemulator.net/

The game seems to have relied on an old behaviour of the function SetCurrentDirectoryW( LPCWSTR dir ) which currently crashes the game.

This patch was derived from a solution discovered by the community at https://vgoemulator.net/phpBB3/viewtopic.php?t=5563

It was previously reported to wine bugzilla in this bug report. https://bugs.winehq.org/show_bug.cgi?id=34285

Summary of changes:

Updates the function RtlSetCurrentDirectory_U to remove any trailing "." as the documented behaviour of the setCurrentDirectory function is to resolve the trailing period to the directory itself

Previously the game will set the current directory as "bin\." and subsequently crash when trying to access it as it is being returned as "bin\.Caches".

After this change It will correctly set the directory to "bin\Caches" and run successfully

Notes:

This is my first contribution to the project so I might be making a lot of incorrect assumptions on how this might affect other binaries. Please do let me know if there is a better way to implement a change like this in the codebase.

Thanks for your help

Edited by Lois Gomez

Merge request reports

Loading