2007-08-27 Armin Burgmeier <armin@openismus.com>
authorArmin Burgmeier <armin@openismus.com>
Mon, 27 Aug 2007 11:47:07 +0000 (11:47 +0000)
committerArmin Burgmeier <armin@openismus.com>
Mon, 27 Aug 2007 11:47:07 +0000 (11:47 +0000)
* src/maemo/modest-msg-edit-window.c: Fixed a crash due to endless
recursion when entering text in the subject field.

pmo-trunk-r3087

ChangeLog2
src/maemo/modest-msg-edit-window.c

index 2eca938..444adae 100644 (file)
@@ -1,3 +1,8 @@
+2007-08-27  Armin Burgmeier  <armin@openismus.com>
+
+       * src/maemo/modest-msg-edit-window.c: Fixed a crash due to endless
+       recursion when entering text in the subject field.
+
 2007-08-27  Murray Cumming  <murrayc@murrayc.com>
 
        * src/modest-search.c: Added check_and_wait_for_account_is_online(), 
index 028faca..4f0e79f 100644 (file)
@@ -416,7 +416,7 @@ static gboolean attachment_view_focus_lost (
                GdkEventFocus *event,
                ModestMsgEditWindow *window)
 {
-       g_return_if_fail(MODEST_IS_MSG_EDIT_WINDOW(window));
+       g_return_val_if_fail(MODEST_IS_MSG_EDIT_WINDOW(window), FALSE);
 
        update_remove_attachment_dimming(window);
 
@@ -2865,9 +2865,14 @@ subject_field_insert_text (GtkEditable *editable,
        if (MIN (result_len, 1000) != g_utf8_strlen (new_text, 1000)) {
                g_signal_stop_emission_by_name (G_OBJECT (editable), "insert-text");
                if (result_len > 0)
+               {
+                       /* Prevent endless recursion */
+                       g_signal_handlers_block_by_func(G_OBJECT(editable), G_CALLBACK(subject_field_insert_text), window);
                        g_signal_emit_by_name (editable, "insert-text", 
-                                              (gpointer) result->str, (gpointer) strlen (result->str), 
+                                              (gpointer) result->str, (gpointer) result->len,
                                               (gpointer) position, (gpointer) window);
+                      g_signal_handlers_unblock_by_func(G_OBJECT(editable), G_CALLBACK(subject_field_insert_text), window);
+               }
        }
        
        g_string_free (result, TRUE);