Fix a nasty "unsigned means trouble" bug.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@415 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2000-01-11 11:23:48 +00:00
parent 9be714e913
commit b1a2ea2730
3 changed files with 16 additions and 3 deletions

View File

@ -1,3 +1,13 @@
2000-01-11 Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
* src/paragraph.C (BreakParagraph): do not reserve space on text
if we don't need to (otherwise, if pos_end < pos, we end up
reserving huge amounts of memory due to bad unsigned karma).
(BreakParagraphConservative): ditto, although I have not seen
evidence the bug can happen here.
* src/lyxparagraph.h: add a using std::list.
2000-01-11 Juergen Vigna <jug@sad.it>
* src/menus.C (MenuDocu): output an Alert if the documentation-file

View File

@ -26,7 +26,6 @@
#include "layout.h"
#include "support/block.h"
#define NEW_INSETTABLE 1
#define NEW_FONTTABLE 1
@ -35,6 +34,8 @@ class LyXBuffer;
class TexRow;
struct LaTeXFeatures;
using std::list;
/// A LyXParagraph holds all text, attributes and insets in a text paragraph
class LyXParagraph {
public:

View File

@ -1686,7 +1686,8 @@ void LyXParagraph::BreakParagraph(LyXParagraph::size_type pos,
pos_first++;
pos_end = pos_first + par->text.size() - 1;
tmp->text.reserve(pos_end - pos);
if (pos_end > pos)
tmp->text.reserve(pos_end - pos);
for (i = pos; i <= pos_end; i++) {
par->CutIntoMinibuffer(i - pos_first);
@ -1853,7 +1854,8 @@ void LyXParagraph::BreakParagraphConservative(LyXParagraph::size_type pos)
// InsertFromMinibuffer will enlarge the memory (it uses
// InsertChar of course). But doing it by hand
// is MUCH faster! (only one time, not thousend times!!)
tmp->text.reserve(pos_end - pos);
if (pos_end > pos)
tmp->text.reserve(pos_end - pos);
for (i = pos; i <= pos_end; i++) {