summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2008-09-12 03:46:13 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2008-09-12 03:46:13 +0000
commitd61669e6d306519b57f8114221d68e68bcd956ff (patch)
treee333d7a17b64445c536cd042b0b3b4f77e1dd3be
parent3083a903d16ee77e7fd27f7d96f0abf9fbd2d2ae (diff)
downloadgtk+-d61669e6d306519b57f8114221d68e68bcd956ff.tar.gz
Bug 545875 – evo crashed when trying to print pages 6-7 of a 1 page
email * gtk/gtkprintoperation.c: Clamp page ranges to correct ranges. Patch by Marek Kasik svn path=/branches/gtk-2-12/; revision=21358
-rw-r--r--ChangeLog20
-rw-r--r--gtk/gtkprintoperation.c42
2 files changed, 62 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 85df5f0db9..1dfef75bb0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,26 @@
Merged from trunk:
+ Bug 545875 – evo crashed when trying to print pages 6-7 of a 1 page
+ email
+
+ * gtk/gtkprintoperation.c: Clamp page ranges to correct ranges.
+ Patch by Marek Kasik
+
+2008-09-11 Matthias Clasen <mclasen@redhat.com>
+
+ Merged from trunk:
+
+ Bug 543545 – GtkAssistant crashes when gtk_widget_hide() is called
+ inside "apply" signal handler
+
+ * gtk/gtkassistant.c: Don't emit signals with extra parameters.
+ Patch by Antti Kaijanmäki
+
+2008-09-11 Matthias Clasen <mclasen@redhat.com>
+
+ Merged from trunk:
+
Bug 542523 - GtkTextTag should handle setting properties to NULL
* gtk/gtktexttag.c (gtk_text_tag_set_property): Unset the color when
diff --git a/gtk/gtkprintoperation.c b/gtk/gtkprintoperation.c
index 63d69bbcfa..3269c84ccf 100644
--- a/gtk/gtkprintoperation.c
+++ b/gtk/gtkprintoperation.c
@@ -1919,6 +1919,46 @@ find_range (PrintPagesData *data)
}
}
+static void
+clamp_page_ranges (PrintPagesData *data)
+{
+ GtkPrintOperationPrivate *priv;
+ gint num_of_correct_ranges;
+ gint i;
+
+ priv = data->op->priv;
+
+ num_of_correct_ranges = 0;
+
+ for (i = 0; i < data->num_ranges; i++)
+ if ((data->ranges[i].start >= 0) &&
+ (data->ranges[i].start < priv->nr_of_pages) &&
+ (data->ranges[i].end >= 0) &&
+ (data->ranges[i].end < priv->nr_of_pages))
+ {
+ data->ranges[num_of_correct_ranges] = data->ranges[i];
+ num_of_correct_ranges++;
+ }
+ else if ((data->ranges[i].start >= 0) &&
+ (data->ranges[i].start < priv->nr_of_pages) &&
+ (data->ranges[i].end >= priv->nr_of_pages))
+ {
+ data->ranges[i].end = priv->nr_of_pages - 1;
+ data->ranges[num_of_correct_ranges] = data->ranges[i];
+ num_of_correct_ranges++;
+ }
+ else if ((data->ranges[i].end >= 0) &&
+ (data->ranges[i].end < priv->nr_of_pages) &&
+ (data->ranges[i].start < 0))
+ {
+ data->ranges[i].start = 0;
+ data->ranges[num_of_correct_ranges] = data->ranges[i];
+ num_of_correct_ranges++;
+ }
+
+ data->num_ranges = num_of_correct_ranges;
+}
+
static gboolean
increment_page_sequence (PrintPagesData *data)
{
@@ -2132,6 +2172,8 @@ print_pages_idle (gpointer user_data)
data->ranges[0].end = priv->nr_of_pages - 1;
}
+ clamp_page_ranges (data);
+
if (priv->manual_reverse)
{
data->range = data->num_ranges - 1;