]> git.lyx.org Git - features.git/commitdiff
Fix bug #11588.
authorRichard Kimberly Heck <rikiheck@lyx.org>
Fri, 31 May 2019 00:32:35 +0000 (20:32 -0400)
committerRichard Kimberly Heck <rikiheck@lyx.org>
Sun, 7 Jul 2019 17:31:27 +0000 (13:31 -0400)
Check for the local file before calling kpsewhich.

(cherry picked from commit 2e433654c7f3db02bfd0e4dd09eb04cd8ab44bb9)

src/Buffer.cpp
status.23x

index c5dd9a4b717f349cae68e0d5088ab70d12f40f93..dd0cca62434dfb74e3165ed8f8c9065d651aa3e6 100644 (file)
@@ -2468,17 +2468,25 @@ FileName Buffer::getBibfilePath(docstring const & bibid) const
        map<docstring, FileName>::const_iterator it =
                bibfileCache.find(bibid);
        if (it != bibfileCache.end()) {
-               // i.e., bibfileCache[bibid]
+               // i.e., return bibfileCache[bibid];
                return it->second;
        }
 
        LYXERR(Debug::FILES, "Reading file location for " << bibid);
-       string texfile = changeExtension(to_utf8(bibid), "bib");
-       // note that, if the filename can be found directly from the path,
-       // findtexfile will just return a FileName object for that path.
-       FileName file(findtexfile(texfile, "bib"));
-       if (file.empty())
-               file = FileName(makeAbsPath(texfile, filePath()));
+       string const texfile = changeExtension(to_utf8(bibid), "bib");
+       // we need to check first if this file exists where it's said to be.
+       // there's a weird bug that occurs otherwise: if the file is in the
+       // Buffer's directory but has the same name as some file that would be
+       // found by kpsewhich, then we find the latter, not the former.
+       FileName const local_file = makeAbsPath(texfile, filePath());
+       FileName file = local_file;
+       if (!file.exists()) {
+               // there's no need now to check whether the file can be found
+               // locally
+               file = findtexfile(texfile, "bib", true);
+               if (file.empty())
+                       file = local_file;
+       }
        LYXERR(Debug::FILES, "Found at: " << file);
 
        bibfileCache[bibid] = file;
index 759309196d63d87d11ce7139fdadcaafee584c7a..bf9a95726934f0647aa5f49094d9d9a2ac0fab98 100644 (file)
@@ -65,6 +65,9 @@ Avoid using text mode for unicode symbols representable in math mode (bug 9616).
 
 - Fix problem on Windows with saving files in Dropbox folders (bug 10091).
 
+- Find local bib files when they exist in the same directory as the LyX
+  file (bug 11588).
+
 
 * USER INTERFACE