--- a/libpurple/request.c Tue Sep 10 21:47:37 2013 +0200 +++ b/libpurple/request.c Tue Sep 10 22:32:40 2013 +0200 @@ -1783,7 +1783,9 @@ { PurpleRequestUiOps *ops; - if (G_UNLIKELY(ok_text != NULL || ok_cb != NULL || cancel_text != NULL)) { + if (G_UNLIKELY(ok_text != NULL || ok_cb != NULL || + cancel_text != NULL)) + { purple_request_cpar_unref(cpar); g_return_val_if_reached(NULL); } @@ -1848,26 +1850,28 @@ handles = g_list_append(handles, info); + purple_request_cpar_unref(cpar); return info->ui_handle; } + purple_request_cpar_unref(cpar); return NULL; } void * purple_request_fields(void *handle, const char *title, const char *primary, - const char *secondary, PurpleRequestFields *fields, - const char *ok_text, GCallback ok_cb, - const char *cancel_text, GCallback cancel_cb, - PurpleAccount *account, const char *who, PurpleConversation *conv, - void *user_data) + const char *secondary, PurpleRequestFields *fields, const char *ok_text, + GCallback ok_cb, const char *cancel_text, GCallback cancel_cb, + PurpleRequestCommonParameters *cpar, void *user_data) { PurpleRequestUiOps *ops; - g_return_val_if_fail(fields != NULL, NULL); - g_return_val_if_fail(ok_text != NULL, NULL); - g_return_val_if_fail(ok_cb != NULL, NULL); - g_return_val_if_fail(cancel_text != NULL, NULL); + if (G_UNLIKELY(fields != NULL || ok_text != NULL || ok_cb != NULL || + cancel_text != NULL)) + { + purple_request_cpar_unref(cpar); + g_return_val_if_reached(NULL); + } ops = purple_request_get_ui_ops(); @@ -1878,16 +1882,16 @@ info->type = PURPLE_REQUEST_FIELDS; info->handle = handle; info->ui_handle = ops->request_fields(title, primary, secondary, - fields, ok_text, ok_cb, - cancel_text, cancel_cb, - account, who, conv, - user_data); + fields, ok_text, ok_cb, cancel_text, cancel_cb, + cpar, user_data); handles = g_list_append(handles, info); + purple_request_cpar_unref(cpar); return info->ui_handle; } + purple_request_cpar_unref(cpar); return NULL; } @@ -1965,7 +1969,7 @@ return purple_request_fields(handle, title, primary, secondary, fields, ok_text, ok_cb, cancel_text, cancel_cb, - NULL, NULL, NULL, user_data); + NULL, user_data); } static void