forked from PsychoticNinja/irssi
Use dynamic storage for return value of channel_get_nickmode.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4471 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
983ee1db88
commit
f866799bb0
@ -134,24 +134,25 @@ char *expand_emphasis(WI_ITEM_REC *item, const char *text)
|
|||||||
static char *channel_get_nickmode_rec(NICK_REC *nickrec)
|
static char *channel_get_nickmode_rec(NICK_REC *nickrec)
|
||||||
{
|
{
|
||||||
char *emptystr;
|
char *emptystr;
|
||||||
static char nickmode[2]; /* FIXME: bad */
|
char *nickmode;
|
||||||
|
|
||||||
if (!settings_get_bool("show_nickmode"))
|
if (!settings_get_bool("show_nickmode"))
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
emptystr = settings_get_bool("show_nickmode_empty") ? " " : "";
|
emptystr = settings_get_bool("show_nickmode_empty") ? " " : "";
|
||||||
|
|
||||||
if (nickrec != NULL && nickrec->other) {
|
if (nickrec == NULL)
|
||||||
|
nickmode = g_strdup(emptystr);
|
||||||
|
else if (nickrec->other) {
|
||||||
|
nickmode = g_malloc(2);
|
||||||
nickmode[0] = nickrec->other;
|
nickmode[0] = nickrec->other;
|
||||||
nickmode[1] = '\0';
|
nickmode[1] = '\0';
|
||||||
return nickmode;
|
} else
|
||||||
}
|
nickmode = g_strdup(nickrec->op ? "@" :
|
||||||
|
nickrec->halfop ? "%" :
|
||||||
return nickrec == NULL ? emptystr :
|
nickrec->voice ? "+" :
|
||||||
nickrec->op ? "@" :
|
emptystr);
|
||||||
nickrec->halfop ? "%" :
|
return nickmode;
|
||||||
nickrec->voice ? "+" :
|
|
||||||
emptystr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *channel_get_nickmode(CHANNEL_REC *channel, const char *nick)
|
char *channel_get_nickmode(CHANNEL_REC *channel, const char *nick)
|
||||||
@ -167,9 +168,9 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
|
|||||||
const char *target, NICK_REC *nickrec)
|
const char *target, NICK_REC *nickrec)
|
||||||
{
|
{
|
||||||
CHANNEL_REC *chanrec;
|
CHANNEL_REC *chanrec;
|
||||||
const char *nickmode, *printnick;
|
const char *printnick;
|
||||||
int for_me, print_channel, level;
|
int for_me, print_channel, level;
|
||||||
char *color, *freemsg = NULL;
|
char *nickmode, *color, *freemsg = NULL;
|
||||||
HILIGHT_REC *hilight;
|
HILIGHT_REC *hilight;
|
||||||
|
|
||||||
/* NOTE: this may return NULL if some channel is just closed with
|
/* NOTE: this may return NULL if some channel is just closed with
|
||||||
@ -229,6 +230,7 @@ static void sig_message_public(SERVER_REC *server, const char *msg,
|
|||||||
printnick, target, msg, nickmode);
|
printnick, target, msg, nickmode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_free_not_null(nickmode);
|
||||||
g_free_not_null(freemsg);
|
g_free_not_null(freemsg);
|
||||||
g_free_not_null(color);
|
g_free_not_null(color);
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,7 @@ static void sig_message_own_public(SERVER_REC *server, const char *msg,
|
|||||||
MSGLEVEL_NO_ACT,
|
MSGLEVEL_NO_ACT,
|
||||||
TXT_OWN_MSG_CHANNEL,
|
TXT_OWN_MSG_CHANNEL,
|
||||||
server->nick, oldtarget, recoded, nickmode);
|
server->nick, oldtarget, recoded, nickmode);
|
||||||
|
g_free(nickmode);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
signal_stop();
|
signal_stop();
|
||||||
}
|
}
|
||||||
@ -93,6 +94,7 @@ static void sig_message_irc_op_public(SERVER_REC *server, const char *msg,
|
|||||||
MSGLEVEL_PUBLIC,
|
MSGLEVEL_PUBLIC,
|
||||||
TXT_PUBMSG_CHANNEL,
|
TXT_PUBMSG_CHANNEL,
|
||||||
nick, optarget, msg, nickmode);
|
nick, optarget, msg, nickmode);
|
||||||
|
g_free(nickmode);
|
||||||
g_free(optarget);
|
g_free(optarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,6 +114,7 @@ static void sig_message_own_wall(SERVER_REC *server, const char *msg,
|
|||||||
MSGLEVEL_NO_ACT,
|
MSGLEVEL_NO_ACT,
|
||||||
TXT_OWN_MSG_CHANNEL,
|
TXT_OWN_MSG_CHANNEL,
|
||||||
server->nick, optarget, recoded, nickmode);
|
server->nick, optarget, recoded, nickmode);
|
||||||
|
g_free(nickmode);
|
||||||
g_free(recoded);
|
g_free(recoded);
|
||||||
g_free(optarget);
|
g_free(optarget);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user