--- a/libpurple/plugins/perl/perl-handlers.c Wed Jul 17 04:20:08 2013 +0530 +++ b/libpurple/plugins/perl/perl-handlers.c Wed Jul 17 04:31:46 2013 +0530 @@ -285,7 +285,7 @@ int i; int count; int value_count; - PurpleValue *ret_value, **values; + GType ret_type, *value_types; SV **sv_args; DATATYPE **copy_args; @@ -296,14 +296,14 @@ SAVETMPS; PUSHMARK(sp); - purple_signal_get_values(handler->instance, handler->signal, - &ret_value, &value_count, &values); + purple_signal_get_types(handler->instance, handler->signal, + &ret_type, &value_count, &value_types); sv_args = g_new(SV *, value_count); copy_args = g_new(void **, value_count); for (i = 0; i < value_count; i++) { - sv_args[i] = purple_perl_sv_from_vargs(values[i], + sv_args[i] = purple_perl_sv_from_vargs(value_types[i], #ifdef VA_COPY_AS_ARRAY (va_list*)args, #else @@ -318,7 +318,7 @@ PUTBACK; - if (ret_value != NULL) { + if (ret_type != G_TYPE_NONE) { count = call_sv(handler->callback, G_EVAL | G_SCALAR); SPAGAIN; @@ -326,7 +326,7 @@ if (count != 1) croak("Uh oh! call_sv returned %i != 1", i); else - ret_val = purple_perl_data_from_sv(ret_value, POPs); + ret_val = purple_perl_data_from_sv(ret_type, POPs); } else { call_sv(handler->callback, G_EVAL | G_SCALAR); @@ -339,6 +339,7 @@ SvPVutf8_nolen(ERRSV)); } +#if 0 /* See if any parameters changed. */ for (i = 0; i < value_count; i++) { if (purple_value_is_outgoing(values[i])) { @@ -401,6 +402,7 @@ #endif } } +#endif PUTBACK; FREETMPS;