--- a/libpurple/protocols/jabber/si.c Sat Sep 07 02:30:39 2013 +0530 +++ b/libpurple/protocols/jabber/si.c Thu Sep 12 19:08:48 2013 +0530 @@ -1488,10 +1488,7 @@ static void resource_select_ok_cb(PurpleXfer *xfer, PurpleRequestFields *fields) { PurpleRequestField *field = purple_request_fields_get_field(fields, "resource"); - int selected_id = purple_request_field_choice_get_value(field); - GList *labels = purple_request_field_choice_get_labels(field); - - const char *selected_label = g_list_nth_data(labels, selected_id); + const char *selected_label = purple_request_field_choice_get_value(field); do_transfer_send(xfer, selected_label); } @@ -1561,9 +1558,11 @@ PurpleRequestField *field = purple_request_field_choice_new("resource", _("Resource"), 0); PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL); + purple_request_field_choice_set_data_destructor(field, g_free); + for(l = resources; l; l = l->next) { jbr = l->data; - purple_request_field_choice_add(field, jbr->name); + purple_request_field_choice_add(field, jbr->name, g_strdup(jbr->name)); } purple_request_field_group_add_field(group, field); @@ -1572,7 +1571,7 @@ purple_request_fields(jsx->js->gc, _("Select a Resource"), msg, NULL, fields, _("Send File"), G_CALLBACK(resource_select_ok_cb), _("Cancel"), G_CALLBACK(resource_select_cancel_cb), - purple_connection_get_account(jsx->js->gc), purple_xfer_get_remote_user(xfer), NULL, xfer); + purple_request_cpar_from_connection(jsx->js->gc), xfer); g_free(msg); }