I am not sure what is the motivation behind the action of not registering symbols that already exist, probably for a good reason. So I am unable to resolve it myself, probably need someone with more knowledge on this to look into it.
Weird enough, even if this is fixed, the original issue #4883 is still NOT fixed. The type library info from the snapshot overwrites the (correct) type library info provided by the binary view.
This is part of the reason of https://github.com/Vector35/binaryninja-api/issues/4883. The issue brings up a case like this:
In the above case, the code here will try to register the symbol with the new type library: https://github.com/Vector35/view-pe/blob/6e4448fbe2ad88121db79ce36ac07c994d1184cd/peview.cpp#L1540-L1541. However, the code in PEView::AddPESymbol will reject the operation: https://github.com/Vector35/view-pe/blob/6e4448fbe2ad88121db79ce36ac07c994d1184cd/peview.cpp#L2704-L2709. Since the symbol already exists in the snapshot, causing the type library cache to use the old symbol without the new type library info.
I am not sure what is the motivation behind the action of not registering symbols that already exist, probably for a good reason. So I am unable to resolve it myself, probably need someone with more knowledge on this to look into it.