+void DocIterator::sanitize()
+{
+ // this function re-creates the cache of inset pointers
+ //lyxerr << "converting:\n" << *this << endl;
+ if (buffer_)
+ inset_ = &buffer_->inset();
+ Inset * inset = inset_;
+ for (size_t i = 0, n = slices_.size(); i != n; ++i) {
+ if (inset == 0) {
+ // FIXME
+ LYXERR0(" Should not happen, but does e.g. after "
+ "C-n C-l C-z S-C-z\n"
+ << " or when a Buffer has been concurrently edited by two views"
+ << '\n' << "dit: " << *this << '\n'
+ << " lastpos: " << slices_[i].lastpos());
+ fixIfBroken();
+ break;
+ }
+ slices_[i].inset_ = inset;
+ if (fixIfBroken())
+ break;
+ if (i + 1 != n)
+ inset = slices_[i].inset().inMathed() ? slices_[i].cell()[slices_[i].pos()].nucleus()
+ : slices_[i].paragraph().getInset(pos());
+ }
+ //lyxerr << "convert:\n" << *this << " to:\n" << dit << endl;
+}
+
+