diff --git a/src/BufferList.cpp b/src/BufferList.cpp index 4f6c848452..c83d3f20e2 100644 --- a/src/BufferList.cpp +++ b/src/BufferList.cpp @@ -327,9 +327,26 @@ Buffer * BufferList::getBufferFromTmp(string const & s) { BufferStorage::iterator it = bstore.begin(); BufferStorage::iterator end = bstore.end(); - for (; it < end; ++it) - if (prefixIs(s, (*it)->temppath())) - return *it; + for (; it < end; ++it) { + if (prefixIs(s, (*it)->temppath())) { + // check whether the filename matches the master + string const master_name = changeExtension(onlyFilename( + (*it)->absFileName()), ".tex"); + if (suffixIs(s, master_name)) + return *it; + // if not, try with the children + vector clist = (*it)->getChildren(); + vector::const_iterator cit = clist.begin(); + vector::const_iterator cend = clist.end(); + for (; cit < cend; ++cit) { + string const mangled_child_name = DocFileName( + changeExtension((*cit)->absFileName(), + ".tex")).mangledFilename(); + if (suffixIs(s, mangled_child_name)) + return *cit; + } + } + } return 0; }