Don't sort the bibfiles cache.

This causes problems with biblatex. Instead, we sort the old and
new lists and then compare them.

(cherry picked from commit 6b095e2b71)
This commit is contained in:
Richard Kimberly Heck 2018-04-25 13:40:37 -04:00
parent 13354c4a53
commit e7387fd348
2 changed files with 13 additions and 3 deletions

View File

@ -4789,9 +4789,13 @@ void Buffer::updateBuffer(UpdateScope scope, UpdateType utype) const
return;
// if the bibfiles changed, the cache of bibinfo is invalid
sort(d->bibfiles_cache_.begin(), d->bibfiles_cache_.end());
// the old one should already be sorted
if (old_bibfiles != d->bibfiles_cache_) {
FileNamePairList new_bibfiles = d->bibfiles_cache_;
// this is a trick to determine whether the two vectors have
// the same elements.
sort(new_bibfiles.begin(), new_bibfiles.end());
sort(old_bibfiles.begin(), old_bibfiles.end());
if (old_bibfiles != new_bibfiles) {
LYXERR(Debug::FILES, "Reloading bibinfo cache.");
invalidateBibinfoCache();
reloadBibInfoCache();
// We relied upon the bibinfo cache when recalculating labels. But that
@ -4808,8 +4812,11 @@ void Buffer::updateBuffer(UpdateScope scope, UpdateType utype) const
// updateMacros();
setChangesPresent(false);
updateBuffer(parit, utype);
// this will already have been done by reloadBibInfoCache();
// d->bibinfo_cache_valid_ = true;
}
else {
LYXERR(Debug::FILES, "Bibfiles unchanged.");
// this is also set to true on the other path, by reloadBibInfoCache.
d->bibinfo_cache_valid_ = true;
}

View File

@ -143,6 +143,9 @@ What's new
- Recompile grandchildren when they have updated (bug 11112).
- Output list of bibliography files in the order given in the dialog, rather
than sorted.
* LYX2LYX