commit 52072b9b4e88e3260637b654d364193092d04192
Author: Georg Baum <[email protected]>
Date:   Sun Feb 23 12:33:15 2014 +0100

    Fix crash on recursive include (bug #8994)
    
    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.

diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp
index fe0c1ed..d531662 100644
--- a/src/insets/InsetInclude.cpp
+++ b/src/insets/InsetInclude.cpp
@@ -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();
 }
 

Reply via email to