The issue here was that when an archive library ID is read from
blendfile (memfile undo buffer in that case), a new split main is
immediately created for it in `direct_link_library`, and the newly
read Library is assigned to its `Main::curlib` pointer.
However, in undo readfile code, when an old matching ID is found, the
new data is moved into that old address, to avoid modifying all other
unchanged ID using that re-read data-block.
For (archive) libraries, it means that their split main `curlib` pointer
also needs to be re-assigned to the re-used old address.
Pull Request: https://projects.blender.org/blender/blender/pulls/147744