diff mcabber/src/jabglue.c @ 165:b4921dbf8709

[/trunk] Changeset 177 by mikael * Maybe fix a segfault when receiving a message. * Try to have a less intrusive signal handler function. * TODO update
author mikael
date Wed, 04 May 2005 09:07:49 +0000
parents faf534be8ff0
children 62bc2992216b
line wrap: on
line diff
--- a/mcabber/src/jabglue.c	Mon May 02 20:31:01 2005 +0000
+++ b/mcabber/src/jabglue.c	Wed May 04 09:07:49 2005 +0000
@@ -97,7 +97,11 @@
 char *jidtodisp(const char *jid)
 {
   char *ptr;
-  char *alias = g_strdup(jid);
+  char *alias;
+
+  while ((alias = g_strdup(jid)) == NULL)
+    usleep(100);
+
   if ((ptr = strchr(alias, '/')) != NULL) {
     *ptr = 0;
   }
@@ -486,7 +490,6 @@
 {
   char *p, *r;
   xmlnode x, y;
-  // string from, type, body, enc, ns, id, u, h, s;
   char *from=NULL, *type=NULL, *body=NULL, *enc=NULL;
   char *ns=NULL;
   char *id=NULL;
@@ -508,7 +511,7 @@
 
           if ((x = xmlnode_get_tag(packet->x, "subject")) != NULL)
             if ((p = xmlnode_get_data(x)) != NULL) {
-              tmp = g_new(char, strlen(body)+strlen(p)+3);
+              tmp = g_new(char, strlen(body)+strlen(p)+4);
               *tmp = '[';
               strcpy(tmp+1, p);
               strcat(tmp, "]\n");
@@ -529,7 +532,7 @@
                 }
           }
 
-          if (body)
+          if (from && body)
             gotmessage(type, from, body, enc);
           if (tmp)
             g_free(tmp);