No idea if this will help or not, but a few things I figured out while trying to troubleshoot this:
If the target player is offline you will see:
now has access to your vault.
If the target player is online you will see:
That person already has access to your vault.
find_owner is checking online characters and if they aren't online it ends up returning nullptr to _bool has_vault_access(QString who, struct vault_data *vault)_
The check at vault.cpp on line 172 is always returning false. Just depending on if they are online or not, line 175 will either add them to the vault if they are offline or say they already have access if they are online.
Describe the bug When you use vault access to add/remove someone from a vault, it will add the named char repeatedly, but will not remove them ever.
To Reproduce Steps to reproduce the behavior:
Expected behavior First time you type vault access it adds them to your vault, second time it removes them from your vault.
Screenshots The following people have access to your vault: Pirate Pirate Pirate Pirate Pirate Pirate Pirate