Fix bugs, add assers based on bug reports from Korbinian
authorjelmer <jelmer>
Thu, 25 Aug 2005 18:18:15 +0000 (20:18 +0200)
committerjelmer <jelmer>
Thu, 25 Aug 2005 18:18:15 +0000 (20:18 +0200)
ChangeLog
mods/admin.c
mods/log_custom.c
network.c
util.c

index 7476e21672eba3e887cc84f6d9e780ff4fb9c038..1e82523cf1328335d8aab792974cbdd3e07e306d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,7 +2,7 @@
        Jelmer Vernooij <jelmer@vernstok.nl>
 
 Ctrlproxy 2.7:
- * NetBSD poratbility fixes (Adrian Portelli)
+ * NetBSD portability fixes (Adrian Portelli)
  * Properly support strict-rfc1459 comparisons
  * Show SVN revision in version for SVN checkouts
  * Add support for %B and %Y (Korbinian Rosenegger)
index 5b9f319a26b8e211ecdeb235983b9dc854248445..470fe48979f4f53da4ded501f16823d2be483e87 100644 (file)
@@ -61,7 +61,9 @@ void admin_out(const struct client *c, const char *fmt, ...)
                !strcmp(c->network->connection.data.virtual.ops->name, "admin")) {
                virtual_network_recv_args(c->network, hostmask+1, "PRIVMSG", ADMIN_CHANNEL, msg, NULL);
        } else {
-               irc_send_args(c->incoming, hostmask, "NOTICE", c->network->state->me.nick, msg, NULL);
+               char *nick = c->nick;
+               if (c->network->state) nick = c->network->state->me.nick;
+               irc_send_args(c->incoming, hostmask, "NOTICE", nick, msg, NULL);
        }
        g_free(hostmask);
 
index 4d7cd6b9ffdbf8de419a550359d6fc59706c3183..9fd1bfe57c42a0347ac9b4822c60b618b1c9ba1b 100644 (file)
@@ -393,17 +393,18 @@ static void file_write_channel_query(struct network *network, const char *n, str
        }
        
        nn = find_network_nick(network->state, nick);
+       g_assert(nn);
 
        /* now, loop thru the users' channels */
        for (gl = nn->channel_nicks; gl; gl = gl->next) {
                struct channel_nick *cn = gl->data;
                f = find_add_channel_file(network, l, cn->channel->name, TRUE);
-               if(f) {
-                       custom_subst(network, &s, fmt, l, cn->channel->name, FALSE, FALSE);
-                       fputs(s, f); fputc('\n', f);
-                       fflush(f);
-                       g_free(s);
-               }
+               if(!f) continue;
+
+               custom_subst(network, &s, fmt, l, cn->channel->name, FALSE, FALSE);
+               fputs(s, f); fputc('\n', f);
+               fflush(f);
+               g_free(s);
        }
 }
 
index 0050b8dd8902034940bfb9f8ce4a21b8dfb1f5c0..b53f3a0438c5f01fc196bd0b27f518c5a0744b3a 100644 (file)
--- a/network.c
+++ b/network.c
@@ -237,6 +237,9 @@ gboolean network_send_args(struct network *s, ...)
        va_list ap;
        struct line *l;
        gboolean ret;
+
+       if (!s->state) return FALSE;
+
        va_start(ap, s);
        l = virc_parse_line(NULL, ap);
        l->origin = g_strdup(s->state->me.nick);
diff --git a/util.c b/util.c
index 5ff84a2aec1b215ab3c7a2cdc18ff18686ca545b..64c2998510b96f3464f08f4718f2e9e6fa90f834 100644 (file)
--- a/util.c
+++ b/util.c
@@ -80,16 +80,22 @@ inline int str_cmphelper(const char *a, const char *b, char sh, char sl, char eh
 
 int str_asciicmp(const char *a, const char *b)
 {
+       g_assert(a != NULL);
+       g_assert(b != NULL);
        return str_cmphelper(a, b, 97, 65, 122, 90);
 }
 
 int str_strictrfc1459cmp(const char *a, const char *b)
 {
+       g_assert(a != NULL);
+       g_assert(b != NULL);
        return str_cmphelper(a, b, 97, 65, 125, 93);
 }
 
 
 int str_rfc1459cmp(const char *a, const char *b)
 {
+       g_assert(a != NULL);
+       g_assert(b != NULL);
        return str_cmphelper(a, b, 97, 65, 126, 94);
 }