view libpurple/plugins/perl/scripts/plugin_action.pl @ 24745:0e8d91cdd63a

Change the msim_msg_clone_element() function to respect the "dynamic_name" flag when cloning elements. This fixes the bug where buddies didn't appear in their correct groups the first time you sign in. The problem is that msim_add_contact_from_server() doesn't have the username, so it calls msim_lookup_user() and clones the contact_info. The problem is that the cloned version of the contact_info points to dynamic names which are freed before we get the response from the user lookup. So msim_add_contact_from_server_cb() is called and based the contact_info, but the names in the contact_info point to freed memory, so we couldn't lookup the uid or the group.
author Mark Doliner <mark@kingant.net>
date Mon, 15 Dec 2008 04:08:31 +0000
parents 2f8274ce570a
children
line wrap: on
line source

$MODULE_NAME = "Plugin Action Test Plugin";
use Purple;

sub plugin_init {
	return %PLUGIN_INFO;
}

sub plugin_load {
	my $plugin = shift;
}

sub plugin_unload {
	my $plugin = shift;
}

sub fun1 {
	print "1\n";
}

sub fun2 {
	print "2\n";
}

sub fun3 {
	print "3\n";
}

%plugin_actions = (
	"Action 1" => \&fun1,
	"Action 2" => \&fun2,
	"Action 3" => \&fun3
#	"Action 1" => sub { print "1\n"; },
#	"Action 2" => sub { print "2\n"; },
#	"Action 3" => sub { print "3\n"; }
);

sub plugin_action_names {
	foreach $key (keys %plugin_actions) {
		push @array, $key;
	}

	return @array;
}

# All the information Purple gets about our nifty plugin
%PLUGIN_INFO = (
	perl_api_version => 2,
	name => "Perl: $MODULE_NAME",
	version => "0.1",
	summary => "Test plugin for the Perl interpreter.",
	description => "Just a basic test plugin template.",
	author => "Etan Reisner <deryni\@gmail.com>",
	url => "http://sourceforge.net/users/deryni9/",

	load => "plugin_load",
	unload => "plugin_unload",
	plugin_action_sub => "plugin_action_names"
);