Падает здесь, потому что LeftPos = -1:
Code: Select all
Text(fit_to_left(i.Data.substr(LeftPos), Width));
а -1 там потому что до этого там какое-то дикое значение, которое больше i.nSelEnd:
Code: Select all
if (!m_Wrap && (i.nSelEnd < LeftPos || i.nSelStart > LeftPos + XX2 - m_X1))
{
if (AdjustSelPosition)
{
LeftPos = i.nSelStart - 1;
AdjustSelPosition = false;
Show();
return;
}
}
А какое-то дикое значение там потому что есть такое:
Code: Select all
if ( vString.eol_length == 0 )
{
int found_offset = static_cast<int>(vString.Data.size());
if ( found_offset > Width-10 )
LeftPos = (Width <= 10 ? found_offset : found_offset + 10 - Width);
}
В логе это помечено как "viewer 2.0".
Я не знаю, зачем там этот последний if, он выглядит подозрительно и без него всё работает. Но, видимо, есть какой-то сакральный смысл.
А 4834 просто сделал проблему видимой.