pidgin/pidgin

Fix a crash on shutdown in kwallet if the wallet was never opened.

The wallet instance variable was not initialized so if the wallet was never opened we were trying to delete and invalid pointer.

Also update the dispose method of the provider to close the wallet as the
tasks in the queue hold a reference to the provider instance as the source
object in their tasks.

Testing Done:
Ran locally with both the kwallet and secret service providers.

Reviewed at https://reviews.imfreedom.org/r/581/
<?xml version='1.0' encoding="ISO-8859-1"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
]>
<chapter id="chapter-signals-cmd">
<title>Command signals</title>
<refsect1 id="cmds.signals" role="signal_proto">
<title role="signal_proto.title">List of signals</title>
<synopsis>
&quot;<link linkend="cmds-cmd-added">cmd-added</link>&quot;
&quot;<link linkend="cmds-cmd-removed">cmd-removed</link>&quot;
</synopsis>
</refsect1>
<refsect1 id="cmds.signal-details" role="signals">
<title role="signals.title">Signal details</title>
<refsect2 id="cmds-cmd-added" role="signal">
<title>The <literal>&quot;cmd-added&quot;</literal> signal</title>
<programlisting>
void user_function (const char *command,
PurpleCmdPriority priority,
PurpleCmdFlag flag,
gpointer user_data)
</programlisting>
<para>
Emitted when a new command is added.
</para>
<variablelist role="params">
<varlistentry>
<term><parameter>command</parameter>&#160;:</term>
<listitem><simpara>The new command.</simpara></listitem>
</varlistentry>
<varlistentry>
<term><parameter>priority</parameter>&#160;:</term>
<listitem><simpara>The priority of the new command.</simpara></listitem>
</varlistentry>
<varlistentry>
<term><parameter>flag</parameter>&#160;:</term>
<listitem><simpara>The command flags.</simpara></listitem>
</varlistentry>
<varlistentry>
<term><parameter>user_data</parameter>&#160;:</term>
<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem>
</varlistentry>
</variablelist>
</refsect2>
<refsect2 id="cmds-cmd-removed" role="signal">
<title>The <literal>&quot;cmd-removed&quot;</literal> signal</title>
<programlisting>
void user_function (const char *command,
gpointer user_data)
</programlisting>
<para>
Emitted when a command is removed.
</para>
<variablelist role="params">
<varlistentry>
<term><parameter>command</parameter>&#160;:</term>
<listitem><simpara>The removed command.</simpara></listitem>
</varlistentry>
<varlistentry>
<term><parameter>user_data</parameter>&#160;:</term>
<listitem><simpara>user data set when the signal handler was connected.</simpara></listitem>
</varlistentry>
</variablelist>
</refsect2>
</refsect1>
</chapter>