]> git.lyx.org Git - features.git/commitdiff
Fix crash on recursive include (bug #8994)
authorGeorg Baum <baum@lyx.org>
Sun, 23 Feb 2014 11:33:15 +0000 (12:33 +0100)
committerGeorg Baum <baum@lyx.org>
Sun, 23 Feb 2014 11:33:15 +0000 (12:33 +0100)
The problem was that collectBibKeys() was called before the recursive include
check was done. Now collectBibKeys() works even for recursive includes, and
your get a proper error message if you try to change the file name to the
parent file.

src/insets/InsetInclude.cpp

index fe0c1edae48e374b5d87df5d80093f28b6f1bfc9..d53166267b7aa1c3693a27d4405f60d9d5b0d1be 100644 (file)
@@ -407,7 +407,9 @@ Buffer * InsetInclude::getChildBuffer() const
 {
        Buffer * childBuffer = loadIfNeeded(); 
 
-       // FIXME: recursive includes
+       // FIXME RECURSIVE INCLUDE
+       // This isn't sufficient, as the inclusion could be downstream.
+       // But it'll have to do for now.
        return (childBuffer == &buffer()) ? 0 : childBuffer;
 }
 
@@ -972,6 +974,11 @@ void InsetInclude::collectBibKeys(InsetIterator const & /*di*/) const
        Buffer * child = loadIfNeeded();
        if (!child)
                return;
+       // FIXME RECURSIVE INCLUDE
+       // This isn't sufficient, as the inclusion could be downstream.
+       // But it'll have to do for now.
+       if (child == &buffer())
+               return;
        child->collectBibKeys();
 }