std::swap(pars_[pit], pars_[pit + 1]);
ParIterator begin(cur);
+ // begin.pos() (== cur.pos()) may point beyond the end of the
+ // paragraph referenced by begin. This would cause a crash
+ // in updateLabels()
+ begin.pos() = 0;
++cur.pit();
ParIterator end = boost::next(ParIterator(cur));
updateLabels(cur.buffer(), begin, end);
finishUndo();
std::swap(pars_[pit], pars_[pit - 1]);
- ParIterator end = boost::next(ParIterator(cur));
+ ParIterator end = ParIterator(cur);
+ // end.pos() (== cur.pos()) may point beyond the end of the
+ // paragraph referenced by end. This would cause a crash
+ // in boost::next()
+ end.pos() = 0;
+ end = boost::next(end);
--cur.pit();
ParIterator begin(cur);
updateLabels(cur.buffer(), begin, end);