Fix crash involving one-column-wide terminals and resizing with wide chars

This commit is contained in:
Keith Winstein
2011-02-12 02:10:32 -05:00
parent 7d1013681f
commit 1565cb169e
2 changed files with 19 additions and 3 deletions
+4 -3
View File
@@ -73,7 +73,9 @@ std::string Display::new_frame( Framebuffer &f )
&& (!f.get_row( frame.y )->wrap)
&& (!initialized || last_frame.get_row( frame.y )->wrap) ) {
frame.x = last_x;
last_frame.reset_cell( last_frame.get_cell( frame.y, frame.x ) );
if ( initialized ) {
last_frame.reset_cell( last_frame.get_cell( frame.y, frame.x ) );
}
snprintf( tmp, 64, "\033[%d;%dH\033[K", frame.y + 1, frame.x + 1 );
frame.append( tmp );
@@ -115,10 +117,9 @@ void Display::put_cell( FrameState &frame, Framebuffer &f )
char tmp[ 64 ];
Cell *cell = f.get_cell( frame.y, frame.x );
Cell *last_cell = last_frame.get_cell( frame.y, frame.x );
if ( initialized
&& ( *cell == *last_cell ) ) {
&& ( *cell == *(last_frame.get_cell( frame.y, frame.x )) ) ) {
frame.x += cell->width;
return;
}