patches/vte-10-pre-edit-crash-on-close.diff
changeset 7509 33597f80a7ed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/vte-10-pre-edit-crash-on-close.diff	Sat Jun 24 00:06:26 2006 +0000
@@ -0,0 +1,33 @@
+--- vte-0.11.13/src/vte.c	2005-05-13 08:15:38.839116000 +0530
++++ vte-0.11.13-new/src/vte.c	2005-05-13 08:17:33.949458000 +0530
+@@ -854,13 +854,11 @@ vte_invalidate_cursor_once(gpointer data
+ 							  row);
+ 		}
+ 		if (cell != NULL) {
++			int charwidth;
+ 			columns = cell->columns;
+-			if (_vte_draw_get_char_width(terminal->pvt->draw,
+-						     cell->c,
+-						     cell->columns) >
+-			    terminal->char_width * columns) {
++			charwidth = terminal->pvt->draw ? _vte_draw_get_char_width(terminal->pvt->draw, cell->c, cell->columns) : 1;
++			if (charwidth > terminal->char_width * columns)
+ 				columns++;
+-			}
+ 		}
+ 		if (preedit_width > 0) {
+ 			columns += preedit_width;
+@@ -13927,10 +13925,9 @@ vte_terminal_paint(GtkWidget *widget, Gd
+ 		item.y = row * height;
+ 		cursor_width = item.columns * width;
+ 		if (cell) {
+-			cursor_width = MAX(cursor_width,
+-					   _vte_draw_get_char_width(terminal->pvt->draw,
+-								    cell->c,
+-								    cell->columns));
++			int charwidth;
++			charwidth = terminal->pvt->draw ? _vte_draw_get_char_width(terminal->pvt->draw, cell->c, cell->columns) : 1;
++			cursor_width = MAX(cursor_width, charwidth);
+ 		}
+ 		if (GTK_WIDGET_HAS_FOCUS(GTK_WIDGET(terminal))) {
+ 			selected = vte_cell_is_selected(terminal, col, drow,