[gtkhtml] Bug 701247 - Crash at html_text_get_link_at_offset()



commit c7b997978d3710792d584056b9eafef660203ae2
Author: Milan Crha <mcrha redhat com>
Date:   Wed Aug 26 14:45:45 2015 +0200

    Bug 701247 - Crash at html_text_get_link_at_offset()

 components/editor/gtkhtml-editor-signals.c |   24 +++++++++++++++++-------
 1 files changed, 17 insertions(+), 7 deletions(-)
---
diff --git a/components/editor/gtkhtml-editor-signals.c b/components/editor/gtkhtml-editor-signals.c
index e07974a..6cb5c65 100644
--- a/components/editor/gtkhtml-editor-signals.c
+++ b/components/editor/gtkhtml-editor-signals.c
@@ -1053,17 +1053,22 @@ gtkhtml_editor_link_properties_description_changed_cb (GtkWidget *window))
                glong length;
                Link *link;
 
-               link = html_text_get_link_at_offset (HTML_TEXT (html->engine->cursor->object), 
html->engine->cursor->offset);
+               if (HTML_IS_TEXT (html->engine->cursor->object))
+                       link = html_text_get_link_at_offset (HTML_TEXT (html->engine->cursor->object), 
html->engine->cursor->offset);
+               else
+                       link = NULL;
                length = g_utf8_strlen (text, -1);
 
                if (link && link->start_offset != link->end_offset) {
+                       HTMLObject *cursor_object = html->engine->cursor->object;
+
                        html_cursor_jump_to (
                                html->engine->cursor, html->engine,
-                               html->engine->cursor->object, link->start_offset);
+                               cursor_object, link->start_offset);
                        html_engine_set_mark (html->engine);
                        html_cursor_jump_to (
                                html->engine->cursor, html->engine,
-                               html->engine->cursor->object, link->end_offset);
+                               cursor_object, link->end_offset);
                        html_engine_delete (html->engine);
                }
 
@@ -1109,17 +1114,22 @@ gtkhtml_editor_link_properties_url_changed_cb (GtkWidget *window))
                Link *link;
                const gchar *descr = gtk_entry_get_text (GTK_ENTRY (dsc_entry));
 
-               link = html_text_get_link_at_offset (HTML_TEXT (html->engine->cursor->object), 
html->engine->cursor->offset);
+               if (HTML_IS_TEXT (html->engine->cursor->object))
+                       link = html_text_get_link_at_offset (HTML_TEXT (html->engine->cursor->object), 
html->engine->cursor->offset);
+               else
+                       link = NULL;
                length = g_utf8_strlen (descr, -1);
 
                if (link && link->start_offset != link->end_offset) {
+                       HTMLObject *cursor_object = html->engine->cursor->object;
+
                        html_cursor_jump_to (
                                html->engine->cursor, html->engine,
-                               html->engine->cursor->object, link->start_offset);
+                               cursor_object, link->start_offset);
                        html_engine_set_mark (html->engine);
                        html_cursor_jump_to (
                                html->engine->cursor, html->engine,
-                               html->engine->cursor->object, link->end_offset);
+                               cursor_object, link->end_offset);
                        html_engine_delete (html->engine);
                }
 
@@ -1158,7 +1168,7 @@ gtkhtml_editor_link_properties_show_window_cb (GtkWidget *window))
                        cursor->object, cursor->offset);
 
        if (url != NULL) {
-               if (!HTML_IS_IMAGE (cursor->object)) {
+               if (HTML_IS_TEXT (cursor->object)) {
                        Link *link;
 
                        link = html_text_get_link_at_offset (


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]