I may be reading wrongly the code, but but seems to me that rowbreakpoint sets row.endpos() to a value larger ny 1 than it should.
I.e. (text.C:LyXText::rowBreakPoint) if (width < 0) { row.endpos(pit->size() + 1); return; } or below pos_type const last = pit->size(); pos_type point = last; if (pos == last) { row.endpos(last + 1); return; } There's more evidence that this was on purpose (lyxrow_funcs.C): pos_type lastPos(Paragraph const & par, Row const & row) { if (par.empty()) return 0; pos_type pos = row.endpos() - 1; if (pos == par.size()) --pos; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this shouldn't be here return pos; } I don't understand what's happening. Shouldn't row.endpos() be par->size() if the par is small enough? Someone can explain to the thicko here? Alfredo