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/
{
X oddness 1
Memcheck:Param
write(buf)
fun:__write_nocancel
fun:_X11TransWrite
obj:/usr/X11R6/lib/libX11.so.6.2
fun:_XReply
}
{
NSS
Memcheck:Cond
obj:/usr/lib/libsoftokn3.so
obj:/usr/lib/libsoftokn3.so
obj:/usr/lib/libsoftokn3.so
obj:/usr/lib/libsoftokn3.so
}
{
X oddness 2
Memcheck:Param
writev(vector[...])
fun:writev
obj:/usr/X11R6/lib/libX11.so.6.2
fun:_X11TransWritev
fun:_XSend
}
{
X oddness 3
Memcheck:Cond
fun:XcursorImageHash
fun:XcursorNoticePutBitmap
fun:_XNoticePutBitmap
fun:XPutImage
}
{
X oddness 4
Memcheck:Param
write(buf)
fun:__write_nocancel
fun:_X11TransWrite
obj:/usr/X11R6/lib/libX11.so.6.2
fun:XFlush
}
{
X oddness 5
Memcheck:Param
write(buf)
fun:__write_nocancel
fun:_X11TransWrite
obj:/usr/X11R6/lib/libX11.so.6.2
fun:XDrawLine
}
{
X oddness 6
Memcheck:Param
write(buf)
fun:__write_nocancel
fun:_X11TransWrite
obj:/usr/X11R6/lib/libX11.so.6.2
fun:_XEventsQueued
}
{
File selector
Memcheck:Value4
fun:_itoa_word
fun:_IO_vfprintf_internal
fun:_IO_vsprintf_internal
fun:_IO_sprintf
}
{
File selector 2
Memcheck:Param
write(buf)
fun:__write_nocancel
fun:_X11TransWrite
obj:/usr/X11R6/lib/libX11.so.6.2
fun:XRenderComposite
}
{
TCL leak
Memcheck:Leak
fun:malloc
fun:TclpAlloc
fun:Tcl_Alloc
fun:Tcl_StaticPackage
}
{
FontConfig Maybe
Memcheck:Leak
fun:malloc
fun:FcStrCopy
fun:FcStrSetAdd
fun:FcLangSetCopy
}
{
File selector 3
Memcheck:Param
write(buf)
fun:__write_nocancel
fun:_X11TransWrite
obj:/usr/X11R6/lib/libX11.so.6.2
fun:_XFlushGCCache
}
{
File selector 4
Memcheck:Param
write(buf)
fun:__write_nocancel
fun:_X11TransWrite
obj:/usr/X11R6/lib/libX11.so.6.2
fun:XCreateGC
}
{
Something else
Memcheck:Param
write(buf)
fun:__write_nocancel
fun:_X11TransWrite
obj:/usr/X11R6/lib/libX11.so.6.2
fun:_XSetClipRectangles
}
{
New conversation windows
Memcheck:Cond
obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
}
{
New conversation windows 2
Memcheck:Cond
obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
obj:/usr/lib/libgtk-x11-2.0.so.0.400.14
obj:/usr/lib/libgobject-2.0.so.0.400.8
}
{
NSS Init
Memcheck:Leak
fun:malloc
fun:PR_Malloc
fun:PR_CreateStack
fun:_PR_InitFdCache
fun:_PR_InitIO
fun:_PR_ImplicitInitialization
fun:PR_Init
fun:rsa_nss_init
fun:GE_plugin_load
fun:purple_plugin_load
fun:purple_plugins_load_saved
fun:main
}
{
libfontconfig leaks
Memcheck:Leak
fun:*alloc
obj:/usr/lib/libfontconfig.so.*
...
}
{
wcslen_sse2 optimization
Memcheck:Addr8
fun:__wcslen_sse2
...
}
{
wcslen_sse2 optimization 2
Memcheck:Cond
fun:__wcslen_sse2
...
}
{
idna bug
Memcheck:Addr4
fun:idna_to_ascii_4z
fun:idna_to_ascii_8z
...
}
{
libcairo uninitialized values
Memcheck:Cond
obj:*libpixman-1.so.*
obj:*libpixman-1.so.*
obj:*libpixman-1.so.*
obj:*libpixman-1.so.*
fun:pixman_image_composite32
obj:*libcairo.so.2.*
obj:*libcairo.so.2.*
obj:*libcairo.so.2.*
obj:*libcairo.so.2.*
obj:*
}
{
librsvg uninitialized values
Memcheck:Cond
obj:*librsvg-2.so.2.*
fun:rsvg_handle_get_pixbuf_sub
fun:rsvg_handle_get_pixbuf
obj:*
}
{
TODO temporary: gg prpl bug, fixit
Memcheck:Addr4
fun:memcpy
fun:ggp_resolver_purple_cb
fun:purple_dnsquery_resolved
...
}