Bug 545875 – evo crashed when trying to print pages 6-7 of a 1 page

2008-08-21  Marek Kasik  <mkasik@redhat.com>

	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


svn path=/trunk/; revision=21177
This commit is contained in:
Marek Kasik 2008-08-21 11:30:46 +00:00 committed by Marek Kašík
parent 91ae7fac64
commit 547694ef0e
2 changed files with 49 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2008-08-21 Marek Kasik <mkasik@redhat.com>
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
2008-08-21 Marek Kasik <mkasik@redhat.com>
* ChangeLog: changelog update for previous commit

View File

@ -1926,6 +1926,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)
{
@ -2139,6 +2179,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;