glib/demo/forms.c          |    4 ++--
 glib/poppler-form-field.cc |    4 ++++
 2 files changed, 6 insertions(+), 2 deletions(-)

New commits:
commit 7b08795a9541e9fa01836b4c7fd63f6fe295ad80
Author: Carlos Garcia Campos <[email protected]>
Date:   Thu Mar 24 12:16:07 2011 +0100

    glib: Add g_return macros to make sure index is correct in form field 
choice methods

diff --git a/glib/poppler-form-field.cc b/glib/poppler-form-field.cc
index 9d4ffbb..55d3bb3 100644
--- a/glib/poppler-form-field.cc
+++ b/glib/poppler-form-field.cc
@@ -540,6 +540,7 @@ poppler_form_field_choice_get_item (PopplerFormField *field,
   GooString *tmp;
   
   g_return_val_if_fail (field->widget->getType () == formChoice, NULL);
+  g_return_val_if_fail (index >= 0 && index < 
poppler_form_field_choice_get_n_items (field), NULL);
 
   tmp = static_cast<FormWidgetChoice*>(field->widget)->getChoice (index);
   return tmp ? _poppler_goo_string_to_utf8 (tmp) : NULL;
@@ -559,6 +560,7 @@ poppler_form_field_choice_is_item_selected 
(PopplerFormField *field,
                                            gint              index)
 {
   g_return_val_if_fail (field->widget->getType () == formChoice, FALSE);
+  g_return_val_if_fail (index >= 0 && index < 
poppler_form_field_choice_get_n_items (field), FALSE);
 
   return static_cast<FormWidgetChoice*>(field->widget)->isSelected (index);
 }
@@ -575,6 +577,7 @@ poppler_form_field_choice_select_item (PopplerFormField 
*field,
                                       gint              index)
 {
   g_return_if_fail (field->widget->getType () == formChoice);
+  g_return_if_fail (index >= 0 && index < 
poppler_form_field_choice_get_n_items (field));
 
   static_cast<FormWidgetChoice*>(field->widget)->select (index);
 }
@@ -605,6 +608,7 @@ poppler_form_field_choice_toggle_item (PopplerFormField 
*field,
                                       gint              index)
 {
   g_return_if_fail (field->widget->getType () == formChoice);
+  g_return_if_fail (index >= 0 && index < 
poppler_form_field_choice_get_n_items (field));
 
   static_cast<FormWidgetChoice*>(field->widget)->toggle (index);
 }
commit f1102fccd2899bc7f97414b1e2a295c59f03da22
Author: Carlos Garcia Campos <[email protected]>
Date:   Thu Mar 24 12:15:30 2011 +0100

    glib-demo: Fix a crash when a choice form field has no items selected

diff --git a/glib/demo/forms.c b/glib/demo/forms.c
index 7836b86..fc9695d 100644
--- a/glib/demo/forms.c
+++ b/glib/demo/forms.c
@@ -202,7 +202,7 @@ pgd_form_field_view_set_field (GtkWidget        *field_view,
                break;
        case POPPLER_FORM_FIELD_CHOICE: {
                gchar *item;
-               gint   selected;
+               gint   selected = -1;
                
                enum_value = g_enum_get_value ((GEnumClass *) g_type_class_ref 
(POPPLER_TYPE_FORM_CHOICE_TYPE),
                                               
poppler_form_field_choice_get_choice_type (field));
@@ -222,7 +222,7 @@ pgd_form_field_view_set_field (GtkWidget        *field_view,
 
                pgd_form_field_view_add_choice_items (GTK_TABLE (table), field, 
&selected, &row);
 
-               if (poppler_form_field_choice_get_n_items (field) > selected) {
+               if (selected >= 0 && poppler_form_field_choice_get_n_items 
(field) > selected) {
                        item = poppler_form_field_choice_get_item (field, 
selected);
                        text = g_strdup_printf ("%d (%s)", selected, item);
                        g_free (item);
_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler

Reply via email to