aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/twitter/twitter_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/twitter/twitter_lib.c')
-rw-r--r--protocols/twitter/twitter_lib.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/protocols/twitter/twitter_lib.c b/protocols/twitter/twitter_lib.c
index 92c6415f..b4b460d3 100644
--- a/protocols/twitter/twitter_lib.c
+++ b/protocols/twitter/twitter_lib.c
@@ -35,6 +35,14 @@
#include <ctype.h>
#include <errno.h>
+/* GLib < 2.12.0 doesn't have g_ascii_strtoll(), work around using system strtoll(). */
+/* GLib < 2.12.4 can be buggy: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=488013 */
+#if !GLIB_CHECK_VERSION(2,12,5)
+#include <stdlib.h>
+#include <limits.h>
+#define g_ascii_strtoll strtoll
+#endif
+
#define TXL_STATUS 1
#define TXL_USER 2
#define TXL_ID 3
@@ -65,6 +73,8 @@ static void twitter_groupchat_init(struct im_connection *ic);
*/
static void txu_free(struct twitter_xml_user *txu)
{
+ if (txu == NULL)
+ return;
g_free(txu->name);
g_free(txu->screen_name);
g_free(txu);
@@ -88,6 +98,8 @@ static void txs_free(struct twitter_xml_status *txs)
static void txl_free(struct twitter_xml_list *txl)
{
GSList *l;
+ if (txl == NULL)
+ return;
for ( l = txl->list; l ; l = g_slist_next(l) )
if (txl->type == TXL_STATUS)
txs_free((struct twitter_xml_status *)l->data);
@@ -472,6 +484,9 @@ static void twitter_groupchat(struct im_connection *ic, GSList *list)
for ( l = list; l ; l = g_slist_next(l) )
{
status = l->data;
+ if (status->user == NULL || status->text == NULL)
+ continue;
+
twitter_add_buddy(ic, status->user->screen_name, status->user->name);
strip_html(status->text);
@@ -735,4 +750,4 @@ void twitter_friendships_create_destroy(struct im_connection *ic, char *who, int
args[0] = "screen_name";
args[1] = who;
twitter_http(ic, create ? TWITTER_FRIENDSHIPS_CREATE_URL : TWITTER_FRIENDSHIPS_DESTROY_URL, twitter_http_post, ic, 1, args, 2);
-} \ No newline at end of file
+}