SetPet() is an inherited function from the class Mob:
https://github.com/EQEmu/Server/blob.../pets.cpp#L542
SetPet(0), when called from the Client class, is essentially doing this:
Code:
((Mob*)client_inst)->SetPet(nullptr);
There are no Client class-based methods performed at this level and all that is occurring is that you're setting the memory reference for the client's pet to nullptr.
This is ok for other mob-derived classes that don't save their pet buffs, inventories, etc... (they still clean-up as required, though)
But, for client, you should to handle it somewhere at the Client class level..meaning database clean-up, and deletion of any possible pet instances from memory..otherwise,
you will end up with a memory leak (allocated..but, no longer used memory that is not released back to the system - the losses add up)
(If you handle the action before creating an actual in-memory reference, then you won't need to worry about the clean-up.)