Mercurial > pidgin
view console/libgnt/gntutils.c @ 13873:77a50840d9e2
[gaim-migrate @ 16344]
Fix some bugs that Relan (resver) tracked down. Basically we were
attempting to convert various strings from some encoding to UTF8
twice. The strings were mostly in ICQ buddy info. He submitted
sf patch #1503955, but I like my approach better.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Mon, 26 Jun 2006 03:55:24 +0000 |
parents | c7d84d4c5afa |
children | 3dbcbc5e57e1 |
line wrap: on
line source
#include "gntutils.h" void gnt_closure_marshal_BOOLEAN__STRING(GClosure *closure, GValue *ret_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data) { typedef gboolean (*func) (gpointer data1, const char *arg1, gpointer data2); register func callback; register GCClosure *cc = (GCClosure*)closure; register gpointer data1, data2; gboolean ret; g_return_if_fail(ret_value != NULL); g_return_if_fail(n_param_values == 2); if (G_CCLOSURE_SWAP_DATA(closure)) { data1 = closure->data; data2 = g_value_peek_pointer(param_values + 0); } else { data1 = g_value_peek_pointer(param_values + 0); data2 = closure->data; } callback = (func) (marshal_data ? marshal_data : cc->callback); ret = callback(data1, g_value_get_string(param_values + 1) , data2); g_value_set_boolean(ret_value, ret); } void gnt_closure_marshal_VOID__INT_INT_INT_INT(GClosure *closure, GValue *ret_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*func) (gpointer data1, int, int, int, int, gpointer data2); register func callback; register GCClosure *cc = (GCClosure*)closure; register gpointer data1, data2; g_return_if_fail(n_param_values == 5); if (G_CCLOSURE_SWAP_DATA(closure)) { data1 = closure->data; data2 = g_value_peek_pointer(param_values + 0); } else { data1 = g_value_peek_pointer(param_values + 0); data2 = closure->data; } callback = (func) (marshal_data ? marshal_data : cc->callback); callback(data1, g_value_get_int(param_values + 1) , g_value_get_int(param_values + 2) , g_value_get_int(param_values + 3) , g_value_get_int(param_values + 4) , data2); } void gnt_closure_marshal_VOID__INT_INT(GClosure *closure, GValue *ret_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*func) (gpointer data1, int, int, gpointer data2); register func callback; register GCClosure *cc = (GCClosure*)closure; register gpointer data1, data2; g_return_if_fail(n_param_values == 3); if (G_CCLOSURE_SWAP_DATA(closure)) { data1 = closure->data; data2 = g_value_peek_pointer(param_values + 0); } else { data1 = g_value_peek_pointer(param_values + 0); data2 = closure->data; } callback = (func) (marshal_data ? marshal_data : cc->callback); callback(data1, g_value_get_int(param_values + 1) , g_value_get_int(param_values + 2) , data2); } void gnt_closure_marshal_VOID__POINTER_POINTER(GClosure *closure, GValue *ret_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*func) (gpointer data1, gpointer, gpointer, gpointer data2); register func callback; register GCClosure *cc = (GCClosure*)closure; register gpointer data1, data2; g_return_if_fail(n_param_values == 3); if (G_CCLOSURE_SWAP_DATA(closure)) { data1 = closure->data; data2 = g_value_peek_pointer(param_values + 0); } else { data1 = g_value_peek_pointer(param_values + 0); data2 = closure->data; } callback = (func) (marshal_data ? marshal_data : cc->callback); callback(data1, g_value_get_pointer(param_values + 1) , g_value_get_pointer(param_values + 2) , data2); }