Avoid reading before begining of buffer when moving/erasing word, fixes crash bug reported by Martin Bähr and further described by Philip Ganchev.

darcs-hash:20061016143912-ac50b-1deacc00f6c0438e6d760568ef5b1e47e3fe08c4.gz
This commit is contained in:
axel 2006-10-17 00:39:12 +10:00
parent afcab9f1b3
commit 49bff53370

View File

@ -1582,12 +1582,12 @@ static void move_word( int dir, int erase, int new )
if( !dir )
{
if( end_buff_pos == 0 )
if( end_buff_pos <= 0 )
break;
}
else
{
if( end_buff_pos == data->buff_len )
if( end_buff_pos >= data->buff_len )
break;
}
@ -1618,12 +1618,12 @@ static void move_word( int dir, int erase, int new )
if( !dir )
{
if( end_buff_pos == 0 )
if( end_buff_pos <= 0 )
break;
}
else
{
if( end_buff_pos == data->buff_len )
if( end_buff_pos >= data->buff_len )
break;
}
@ -1649,6 +1649,12 @@ static void move_word( int dir, int erase, int new )
{
end_buff_pos+=step;
}
/*
Make sure we don't move beyond begining or end of buffer
*/
end_buff_pos = maxi( 0, mini( end_buff_pos, data->buff_len ) );
if( erase )