Comment 2 for bug 347225

Revision history for this message
Noam Lewis (lenoam) wrote :

Firstly, I was about to attach a core dump but realized that it probably contains sensitive information (this is my email client...) I'm leaving the process alive (being traced) for a while, if you have any ideas of things i can do to find the bug.
Secondly, Apparently it's stuck in this function, in the while (1) loop: (gtkhtml/htmlcursor.c: line ~1211)

(Using: libgtkhtml - gtkhtml3.14-3.24.1.1.)

static gboolean
html_cursor_right_edge_of_line (HTMLCursor *cursor, HTMLEngine *engine)
{
 HTMLCursor prev_cursor;
 gint x, y, prev_y;

 g_return_val_if_fail (cursor != NULL, FALSE);
 g_return_val_if_fail (engine != NULL, FALSE);
 g_return_val_if_fail (HTML_IS_ENGINE (engine), FALSE);

 gtk_html_im_reset (engine->widget);

 cursor->have_target_x = FALSE;

 if (engine->need_spell_check)
  html_engine_spell_check_range (engine, engine->cursor, engine->cursor);

 html_cursor_copy (&prev_cursor, cursor);
 html_object_get_cursor_base (cursor->object, engine->painter, cursor->offset,
         &x, &prev_y);

 while (1) {
  if (! right_in_flow (cursor, engine))
   return TRUE;

  html_object_get_cursor_base (cursor->object, engine->painter, cursor->offset,
          &x, &y);

  if (y - cursor->object->ascent > prev_y + prev_cursor.object->descent - 1) {
   html_cursor_copy (cursor, &prev_cursor);
   return TRUE;
  }
  prev_y = y;
  html_cursor_copy (&prev_cursor, cursor);
 }
}