Home » U++ Library support » RichText,QTF,RTF... » BUG? in TxtPaint.cpp
Re: BUG? in TxtPaint.cpp [message #46757 is a reply to message #46756] |
Thu, 28 July 2016 08:39 |
|
koldo
Messages: 3361 Registered: August 2008
|
Senior Veteran |
|
|
Yes. That line crashes my applications.
Look at this:
void RichTxt::GatherValPos(Vector<RichValPos>& f, RichContext rc, int pos, int type) const
{
int parti = 0;
while(parti < part.GetCount()) { <-- This checks parti is in part[] scope
RichContext begin;
Advance(parti++, rc, begin); <-- parti is incremented
if(part[parti].Is<RichTable>()) <-- parti == part.GetCount() ERROR!
GetTable(parti).GatherValPos(f, begin, pos, type);
else {
int nbefore = 0;
int nline = 0;
const Para& p = part[parti].Get<Para>();
if(p.haspos)
if(type == LABELS)
Get(parti, *begin.styles, true).GatherLabels(f, begin.page, begin.py, pos);
else
Get(parti, *begin.styles, true).GatherIndexes(f, begin.page, begin.py, pos);
}
pos += GetPartLength(parti) + 1;
}
}
Maybe this could be better:
void RichTxt::GatherValPos(Vector<RichValPos>& f, RichContext rc, int pos, int type) const
{
int parti = 0;
while(parti < part.GetCount()) {
RichContext begin;
Advance(parti, rc, begin); <-- parti is not incremented here
if(part[parti].Is<RichTable>())
GetTable(parti).GatherValPos(f, begin, pos, type);
else {
int nbefore = 0;
int nline = 0;
const Para& p = part[parti].Get<Para>();
if(p.haspos)
if(type == LABELS)
Get(parti, *begin.styles, true).GatherLabels(f, begin.page, begin.py, pos);
else
Get(parti, *begin.styles, true).GatherIndexes(f, begin.page, begin.py, pos);
}
pos += GetPartLength(parti) + 1;
parti++; <-- parti is incremented here
}
}
Best regards
IƱaki
|
|
|
Goto Forum:
Current Time: Thu May 09 05:31:10 CEST 2024
Total time taken to generate the page: 0.01778 seconds
|