X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fparagraph_funcs.C;h=09072f861b6bbd8c72f091c4dcc708ffc0b21f41;hb=86e0dfa3e11957318ca4f3f549248326aa806eb4;hp=05fe823984bf2a73e0fb63d54f7850029d3b6b04;hpb=b11b6f78b1153198dd8dba2bc7da4c56bfa20dab;p=lyx.git diff --git a/src/paragraph_funcs.C b/src/paragraph_funcs.C index 05fe823984..09072f861b 100644 --- a/src/paragraph_funcs.C +++ b/src/paragraph_funcs.C @@ -18,11 +18,11 @@ #include "debug.h" #include "encoding.h" #include "gettext.h" -#include "iterators.h" #include "language.h" #include "lyxtext.h" #include "outputparams.h" #include "paragraph_pimpl.h" +#include "pariterator.h" #include "sgml.h" #include "texrow.h" #include "vspace.h" @@ -68,11 +68,15 @@ bool moveItem(Paragraph & from, Paragraph & to, if (from.getInset(i)) { // the inset is not in a paragraph anymore tmpinset = from.insetlist.release(i); + from.insetlist.erase(i); } - if (!to.insetAllowed(tmpinset->lyxCode())) + if (!to.insetAllowed(tmpinset->lyxCode())) { + delete tmpinset; return false; - to.insertInset(j, tmpinset, tmpfont); + } + if (tmpinset) + to.insertInset(j, tmpinset, tmpfont); } else { if (!to.checkInsertChar(tmpfont)) return false; @@ -122,18 +126,14 @@ void breakParagraph(BufferParams const & bparams, // copy everything behind the break-position // to the new paragraph -#ifdef WITH_WARNINGS -#warning this seems wrong -#endif - /* FIXME: if !keepempty, empty() == true, then we reach - * here with size() == 0. So pos_end becomes - 1. Why - * doesn't this cause problems ??? + /* Note: if !keepempty, empty() == true, then we reach + * here with size() == 0. So pos_end becomes - 1. This + * doesn't cause problems because both loops below + * enforce pos <= pos_end and 0 <= pos */ pos_type pos_end = pars[par].size() - 1; - pos_type i = pos; - pos_type j = pos; - for (; i <= pos_end; ++i) { + for (pos_type i = pos, j = pos; i <= pos_end; ++i) { Change::Type change = pars[par].lookupChange(i); if (moveItem(pars[par], *tmp, bparams, i, j - pos)) { tmp->setChange(j - pos, change); @@ -141,7 +141,7 @@ void breakParagraph(BufferParams const & bparams, } } - for (i = pos_end; i >= pos; --i) + for (pos_type i = pos_end; i >= pos; --i) pars[par].eraseIntern(i); } @@ -341,7 +341,7 @@ Paragraph const & ownerPar(Buffer const & buf, InsetBase const * inset) } -/// return the range of pars [beg, end[ owning the range of y [ystart, yend] +/// return the range of pars [beg, end[ owning the range of y [ystart, yend] void getParsInRange(ParagraphList & pars, int ystart, int yend, par_type & beg, par_type & end) {