Mercurial > pidgin
view libpurple/plugins/test.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 | c9dc220e0301 |
| children |
line wrap: on
line source
use Purple; %PLUGIN_INFO = ( perl_api_version => 2, name => 'Test Perl Plugin', version => '1.0', summary => 'Provides as a test base for the perl plugin.', description => 'Provides as a test base for the perl plugin.', author => 'Etan Reisner <deryni\@pidgin.im>', url => 'http://pidgin.im', load => "plugin_load" ); sub plugin_init { return %PLUGIN_INFO; } sub account_status_cb { my ($account, $old, $new, $data) = @_; Purple::Debug::info("perl test plugin", "In account_status_cb\n"); Purple::Debug::info("perl test plugin", "Account " . $account->get_username() . " changed status.\n"); Purple::Debug::info("perl test plugin", $data . "\n"); } sub plugin_load { my $plugin = shift; Purple::Debug::info("perl test plugin", "plugin_load\n"); Purple::Debug::info("perl test plugin", "Listing accounts.\n"); foreach $account (Purple::Accounts::get_all()) { Purple::Debug::info("perl test plugin", $account->get_username() . "\n"); } Purple::Signal::connect(Purple::Accounts::get_handle(), "account-status-changed", $plugin, \&account_status_cb, "test"); }
