[gimp/soc-2011-seamless-clone2] Bug 694417 - GIMP Segmentation Faults (Segfault, Crash) after Changing Color...
- From: Clayton Walker <claytonw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/soc-2011-seamless-clone2] Bug 694417 - GIMP Segmentation Faults (Segfault, Crash) after Changing Color...
- Date: Wed, 8 May 2013 15:17:40 +0000 (UTC)
commit 3effbd9b90a455ae5b35170f15994f5e3091e0ba
Author: Michael Natterer <mitch gimp org>
Date: Sun Apr 21 17:51:08 2013 +0200
Bug 694417 - GIMP Segmentation Faults (Segfault, Crash) after Changing Color...
Don't pass a NULL pointer to gimp_text_buffer_get_font_tag() because
it is dereferenced in a call to strcmp().
gimp_context_get_font_name() returns NULL when the selected text
includes spans with different fonts. Add the same special handling for
spans with inconsistent sizes too, and add comments that we should
have the same for the color.
Original patch from Massimo Valentini.
app/widgets/gimptextstyleeditor.c | 50 +++++++++++++++++++++++-------------
1 files changed, 32 insertions(+), 18 deletions(-)
---
diff --git a/app/widgets/gimptextstyleeditor.c b/app/widgets/gimptextstyleeditor.c
index 58c40da..622912f 100644
--- a/app/widgets/gimptextstyleeditor.c
+++ b/app/widgets/gimptextstyleeditor.c
@@ -561,26 +561,29 @@ gimp_text_style_editor_list_tags (GimpTextStyleEditor *editor,
}
{
- GtkTextTag *tag;
- GList *list;
- gdouble pixels;
- gdouble points;
+ GList *list;
+ gdouble pixels;
for (list = editor->buffer->size_tags; list; list = g_list_next (list))
*remove_tags = g_list_prepend (*remove_tags, list->data);
pixels = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (editor->size_entry), 0);
- points = gimp_units_to_points (pixels,
- GIMP_UNIT_PIXEL,
- editor->resolution_y);
- tag = gimp_text_buffer_get_size_tag (editor->buffer,
- PANGO_SCALE * points);
- tags = g_list_prepend (tags, tag);
+ if (pixels != 0.0)
+ {
+ GtkTextTag *tag;
+ gdouble points;
+
+ points = gimp_units_to_points (pixels,
+ GIMP_UNIT_PIXEL,
+ editor->resolution_y);
+ tag = gimp_text_buffer_get_size_tag (editor->buffer,
+ PANGO_SCALE * points);
+ tags = g_list_prepend (tags, tag);
+ }
}
{
- GtkTextTag *tag;
GList *list;
const gchar *font_name;
@@ -588,24 +591,33 @@ gimp_text_style_editor_list_tags (GimpTextStyleEditor *editor,
*remove_tags = g_list_prepend (*remove_tags, list->data);
font_name = gimp_context_get_font_name (editor->context);
- tag = gimp_text_buffer_get_font_tag (editor->buffer, font_name);
- tags = g_list_prepend (tags, tag);
+ if (font_name)
+ {
+ GtkTextTag *tag;
+
+ tag = gimp_text_buffer_get_font_tag (editor->buffer, font_name);
+ tags = g_list_prepend (tags, tag);
+ }
}
{
- GtkTextTag *tag;
- GList *list;
- GimpRGB color;
+ GList *list;
+ GimpRGB color;
for (list = editor->buffer->color_tags; list; list = g_list_next (list))
*remove_tags = g_list_prepend (*remove_tags, list->data);
gimp_color_button_get_color (GIMP_COLOR_BUTTON (editor->color_button),
&color);
- tag = gimp_text_buffer_get_color_tag (editor->buffer, &color);
- tags = g_list_prepend (tags, tag);
+ if (TRUE) /* FIXME should have "inconsistent" state as for font and size */
+ {
+ GtkTextTag *tag;
+
+ tag = gimp_text_buffer_get_color_tag (editor->buffer, &color);
+ tags = g_list_prepend (tags, tag);
+ }
}
*remove_tags = g_list_reverse (*remove_tags);
@@ -766,6 +778,8 @@ gimp_text_style_editor_set_color (GimpTextStyleEditor *editor,
gimp_color_button_set_color (GIMP_COLOR_BUTTON (editor->color_button),
&color);
+ /* FIXME should have "inconsistent" state as for font and size */
+
g_signal_handlers_unblock_by_func (editor->color_button,
gimp_text_style_editor_color_changed,
editor);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]