Mercurial > pidgin
view libpurple/purple-client.c @ 26214:7988bbd25151
fixes an invalid read:
==12531== Invalid read of size 1
==12531== at 0xFD7FB2D: yahoo_packet_read (yahoo_packet.c:205)
==12531== by 0xFD6E18D: yahoo_pending (yahoo.c:3267)
==12531== by 0x474C5C: pidgin_io_invoke (gtkeventloop.c:78)
==12531== by 0x9DF8D5A: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.1800.2)
==12531== by 0x9DFC52C: (within /usr/lib/libglib-2.0.so.0.1800.2)
==12531== by 0x9DFCA5C: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.1800.2)
==12531== by 0x60677A6: gtk_main (in /usr/lib/libgtk-x11-2.0.so.0.1400.4)
==12531== by 0x492CFF: main (gtkmain.c:892)
==12531== Address 0xcee0552 is 0 bytes after a block of size 26 alloc'd
==12531== at 0x4C265AE: malloc (vg_replace_malloc.c:207)
==12531== by 0x9E01472: g_malloc (in /usr/lib/libglib-2.0.so.0.1800.2)
==12531== by 0x9E19056: g_memdup (in /usr/lib/libglib-2.0.so.0.1800.2)
==12531== by 0xFD6E1E8: yahoo_pending (yahoo.c:3271)
==12531== by 0x474C5C: pidgin_io_invoke (gtkeventloop.c:78)
==12531== by 0x9DF8D5A: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.1800.2)
==12531== by 0x9DFC52C: (within /usr/lib/libglib-2.0.so.0.1800.2)
==12531== by 0x9DFCA5C: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.1800.2)
==12531== by 0x60677A6: gtk_main (in /usr/lib/libgtk-x11-2.0.so.0.1400.4)
==12531== by 0x492CFF: main (gtkmain.c:892)
author | Ka-Hing Cheung <khc@hxbc.us> |
---|---|
date | Thu, 26 Mar 2009 03:40:59 +0000 |
parents | 48d09d62912e |
children |
line wrap: on
line source
#ifndef DBUS_API_SUBJECT_TO_CHANGE #define DBUS_API_SUBJECT_TO_CHANGE #endif #include <dbus/dbus-glib.h> #include <stdio.h> #include <stdlib.h> #include "dbus-purple.h" #include "purple-client.h" static DBusGConnection *bus; static DBusGProxy *purple_proxy; static GList *garray_int_to_glist(GArray *array) { GList *list = NULL; int i; for (i = 0; i < array->len; i++) list = g_list_append(list, GINT_TO_POINTER(g_array_index(array,gint,i))); g_array_free(array, TRUE); return list; } static GSList *garray_int_to_gslist(GArray *array) { GSList *list = NULL; int i; for (i = 0; i < array->len; i++) list = g_slist_append(list, GINT_TO_POINTER(g_array_index(array,gint,i))); g_array_free(array, TRUE); return list; } #include "purple-client-bindings.c" static void lose(const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2); static void lose_gerror(const char *prefix, GError *error) G_GNUC_NORETURN; static void lose(const char *str, ...) { va_list args; va_start(args, str); vfprintf(stderr, str, args); fputc('\n', stderr); va_end(args); exit(1); } static void lose_gerror(const char *prefix, GError *error) { lose("%s: %s", prefix, error->message); } void purple_init(void) { GError *error = NULL; g_type_init (); bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error); if (!bus) lose_gerror ("Couldn't connect to session bus", error); purple_proxy = dbus_g_proxy_new_for_name (bus, DBUS_SERVICE_PURPLE, DBUS_PATH_PURPLE, DBUS_INTERFACE_PURPLE); if (!purple_proxy) lose_gerror ("Couldn't connect to the Purple Service", error); }