From 23b6ec4492dca350435069c170bffac8beb2ac65 Mon Sep 17 00:00:00 2001 From: Arnaud Cornet Date: Thu, 22 Jan 2009 11:24:44 +0100 Subject: [PATCH] Better check for backread returning NULL --- src/irc.c | 6 ++++-- src/log.c | 36 +++++++++++++++++++----------------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/irc.c b/src/irc.c index ca7725f..1c154ec 100644 --- a/src/irc.c +++ b/src/irc.c @@ -679,8 +679,10 @@ void irc_cli_backlog(struct link_client *ic, int hours) bllines = backlog_lines(LINK(ic)->log, bl, LINK(ic)->l_server->nick, hours); if (bllines) { - mylog(LOG_INFO, "backlogging: %s", bl); - write_lines(CONN(ic), bllines); + if (!list_is_empty(bllines)) { + mylog(LOG_INFO, "backlogging: %s", bl); + write_lines(CONN(ic), bllines); + } list_free(bllines); } free(bl); diff --git a/src/log.c b/src/log.c index 65e08e7..5f0c64f 100644 --- a/src/log.c +++ b/src/log.c @@ -1303,23 +1303,25 @@ list_t *backlog_lines(log_t *log, const char *bl, const char *cli_nick, ret = log_backread(log, bl, dest); else ret = log_backread_hours(log, bl, dest, hours); - /* - * This exception is cosmetic, but you want it. - * Most of the time, you get backlog from your own nick for - * your mode changes only. - * Hence opening a query just to say "end of backlog"... - */ - if (strcmp(bl, cli_nick) != 0) { - /* clean this up */ - irc_line_init(&l); - l.origin = P_IRCMASK; - if (dest == cli_nick) - l.origin = (char *)bl; - _irc_line_append(&l, "PRIVMSG"); - _irc_line_append(&l, dest); - _irc_line_append(&l, "End of backlog"); - if (ret) list_add_last(ret, irc_line_to_string(&l)); - _irc_line_deinit(&l); + if (ret && !list_is_empty(ret)) { + /* + * This exception is cosmetic, but you want it. + * Most of the time, you get backlog from your own nick + * for your mode changes only. + * Hence opening a query just to say "end of backlog"... + */ + if (strcmp(bl, cli_nick) != 0) { + /* clean this up */ + irc_line_init(&l); + l.origin = P_IRCMASK; + if (dest == cli_nick) + l.origin = (char *)bl; + _irc_line_append(&l, "PRIVMSG"); + _irc_line_append(&l, dest); + _irc_line_append(&l, "End of backlog"); + list_add_last(ret, irc_line_to_string(&l)); + _irc_line_deinit(&l); + } } } return ret;