changeset 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 aa5b635520ef
files mcabber/src/TODO mcabber/src/jabglue.c mcabber/src/main.c
diffstat 3 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/TODO	Mon May 02 20:31:01 2005 +0000
+++ b/mcabber/src/TODO	Wed May 04 09:07:49 2005 +0000
@@ -2,6 +2,7 @@
 BUGS:
 
 * Check if it crashes when resized too small...  Can we have a minimum size?
+* Colors are misnamed
 
 
 TODO:
--- 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);
--- a/mcabber/src/main.c	Mon May 02 20:31:01 2005 +0000
+++ b/mcabber/src/main.c	Wed May 04 09:07:49 2005 +0000
@@ -28,8 +28,8 @@
     do {
       pid = waitpid (WAIT_ANY, &status, WNOHANG);
     } while (pid > 0);
-    if (pid < 0)
-      ut_WriteLog("Error in waitpid: errno=%d\n", errno);
+    //if (pid < 0)
+    //  ut_WriteLog("Error in waitpid: errno=%d\n", errno);
     signal(SIGCHLD, sig_handler);
   } else if (signum == SIGTERM) {
     // bud_TerminateBuddies();
@@ -37,8 +37,9 @@
     jb_disconnect();
     printf("Killed by SIGTERM\nBye!\n");
     exit(EXIT_SUCCESS);
+  } else {
+    ut_WriteLog("Caught signal: %d\n", signum);
   }
-  ut_WriteLog("Caught signal: %d\n", signum);
 }
 
 ssize_t my_getpass (char **passstr, size_t *n)