Possibility of circular reference

I spent several hours today crosslinking bookmarks in a project between research files and chapter files. I had the editors split, so I could find one file in the lower editor, then bookmark it to the file in the upper editor.

That’s when I started to notice a significant slowdown in Scrivener, to the point that the interface froze. I could no longer switch focus from one editor to another, although the rest of Scrivener seemed to be working fine. I could fix the freeze by closing and reopening the second editor.

I then noticed that I had bookmarked a research file to the related chapter file, but I had also bookmarked the identical chapter file into the research file, thereby setting up a circular reference, where one file links to another and vice versa.

Having had some programming experience, I know how circular references can create havoc and slowdowns. So you might want to consider what happens in Scrivener should a user create circular reference between two files. It might be a problem.

I’ll try to test and document this in more detail later, just wanted to give you a heads up.

I could not replicate this in an otherwise blank project. Please let me know if you are able to replicate it either in your project or in a different project.

Thanks.

My guess would be there is something else going on. These references are not “circular” in the programming sense that might cause problem like infinite loops. They are simply entries in an XML file to a particular UUID. Item A has an entry to item B, and that’s pretty much the end of it. There is no further functionailty beyond that reference list, outside of what the GUI lets you do with it. Or another way of putting it is that it is about as functionally circular as a text file that mentions another text file by name, which mentions that text file by name. It is circular to us who interpret it, but to the file system and anything working with those files as editors, it’s a dead end reference.

In fact, Scrivener’s default settings create “circular” links by default! If you link X to Y, or bookmark it, you’ll find Y has a bookmark to X added automatically. I depend upon that capability heavily in my projects. It is not uncommon for there to be a dozen bookmarks per item, where a good half of those are populated as back-links from inbound links to that item.