Use glib for all allocations
- Removes need to check for malloc failure - Removes need for NULL checks on free - Adds checks for integer overflows - Removes some extra memset calls - Removes chance of mixing libc and glib malloc/freewip/connecting
parent
c4cb1b25ec
commit
83032b1aa3
|
@ -61,7 +61,7 @@ list_addentry (GSList ** list, char *cmd, char *name)
|
|||
cmd_len = strlen (cmd) + 1;
|
||||
name_len = strlen (name) + 1;
|
||||
|
||||
pop = malloc (sizeof (struct popup) + cmd_len + name_len);
|
||||
pop = g_malloc (sizeof (struct popup) + cmd_len + name_len);
|
||||
pop->name = (char *) pop + sizeof (struct popup);
|
||||
pop->cmd = pop->name + name_len;
|
||||
|
||||
|
@ -133,13 +133,13 @@ list_loadconf (char *file, GSList ** list, char *defaultconf)
|
|||
abort ();
|
||||
}
|
||||
|
||||
ibuf = malloc (st.st_size);
|
||||
ibuf = g_malloc (st.st_size);
|
||||
read (fd, ibuf, st.st_size);
|
||||
close (fd);
|
||||
|
||||
list_load_from_data (list, ibuf, st.st_size);
|
||||
|
||||
free (ibuf);
|
||||
g_free (ibuf);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -149,7 +149,7 @@ list_free (GSList ** list)
|
|||
while (*list)
|
||||
{
|
||||
data = (void *) (*list)->data;
|
||||
free (data);
|
||||
g_free (data);
|
||||
*list = g_slist_remove (*list, data);
|
||||
}
|
||||
}
|
||||
|
@ -166,7 +166,7 @@ list_delentry (GSList ** list, char *name)
|
|||
if (!g_ascii_strcasecmp (name, pop->name))
|
||||
{
|
||||
*list = g_slist_remove (*list, pop);
|
||||
free (pop);
|
||||
g_free (pop);
|
||||
return 1;
|
||||
}
|
||||
alist = alist->next;
|
||||
|
@ -647,7 +647,7 @@ get_default_language (void)
|
|||
|
||||
if (lang_no >= 0)
|
||||
{
|
||||
free (lang);
|
||||
g_free (lang);
|
||||
return lang_no;
|
||||
}
|
||||
|
||||
|
@ -656,7 +656,7 @@ get_default_language (void)
|
|||
|
||||
lang_no = find_language_number (lang);
|
||||
|
||||
free (lang);
|
||||
g_free (lang);
|
||||
|
||||
return lang_no >= 0 ? lang_no : find_language_number ("en");
|
||||
}
|
||||
|
@ -1226,7 +1226,7 @@ cmd_set (struct session *sess, char *tbuf, char *word[], char *word_eol[])
|
|||
if (erase || *val)
|
||||
{
|
||||
/* save the previous value until we print it out */
|
||||
prev_string = (char*) malloc (vars[i].len + 1);
|
||||
prev_string = g_malloc (vars[i].len + 1);
|
||||
strncpy (prev_string, (char *) &prefs + vars[i].offset, vars[i].len);
|
||||
|
||||
/* update the variable */
|
||||
|
@ -1238,7 +1238,7 @@ cmd_set (struct session *sess, char *tbuf, char *word[], char *word_eol[])
|
|||
PrintTextf (sess, "%s set to: %s (was: %s)\n", var, (char *) &prefs + vars[i].offset, prev_string);
|
||||
}
|
||||
|
||||
free (prev_string);
|
||||
g_free (prev_string);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -208,7 +208,7 @@ chanopt_find (char *network, char *channel, gboolean add_new)
|
|||
return NULL;
|
||||
|
||||
/* allocate a new one */
|
||||
co = g_malloc0 (sizeof (chanopt_in_memory));
|
||||
co = g_new0 (chanopt_in_memory, 1);
|
||||
co->channel = g_strdup (channel);
|
||||
co->network = g_strdup (network);
|
||||
|
||||
|
|
|
@ -44,12 +44,12 @@ ctcp_reply (session *sess, char *nick, char *word[], char *word_eol[],
|
|||
{
|
||||
char tbuf[4096]; /* can receive 2048 from IRC, so this is enough */
|
||||
|
||||
conf = strdup (conf);
|
||||
conf = g_strdup (conf);
|
||||
/* process %C %B etc */
|
||||
check_special_chars (conf, TRUE);
|
||||
auto_insert (tbuf, sizeof (tbuf), conf, word, word_eol, "", "", word_eol[5],
|
||||
server_get_network (sess->server, TRUE), "", "", nick, "");
|
||||
free (conf);
|
||||
g_free (conf);
|
||||
handle_command (sess, tbuf, FALSE);
|
||||
}
|
||||
|
||||
|
|
|
@ -309,7 +309,7 @@ dcc_lookup_proxy (char *host, struct sockaddr_in *addr)
|
|||
memcpy (&addr->sin_addr, &cache_addr, 4);
|
||||
return TRUE;
|
||||
}
|
||||
free (cache_host);
|
||||
g_free (cache_host);
|
||||
cache_host = NULL;
|
||||
}
|
||||
|
||||
|
@ -318,7 +318,7 @@ dcc_lookup_proxy (char *host, struct sockaddr_in *addr)
|
|||
{
|
||||
memcpy (&addr->sin_addr, h->h_addr, 4);
|
||||
memcpy (&cache_addr, h->h_addr, 4);
|
||||
cache_host = strdup (host);
|
||||
cache_host = g_strdup (host);
|
||||
/* cppcheck-suppress memleak */
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -406,7 +406,7 @@ dcc_close (struct DCC *dcc, int dccstat, int destroy)
|
|||
dcc->dccstat = dccstat;
|
||||
if (dcc->dccchat)
|
||||
{
|
||||
free (dcc->dccchat);
|
||||
g_free (dcc->dccchat);
|
||||
dcc->dccchat = NULL;
|
||||
}
|
||||
|
||||
|
@ -417,7 +417,7 @@ dcc_close (struct DCC *dcc, int dccstat, int destroy)
|
|||
g_free (dcc->proxy);
|
||||
g_free (dcc->file);
|
||||
g_free (dcc->destfile);
|
||||
free (dcc->nick);
|
||||
g_free (dcc->nick);
|
||||
g_free (dcc);
|
||||
return;
|
||||
}
|
||||
|
@ -888,8 +888,7 @@ dcc_connect_finished (GIOChannel *source, GIOCondition condition, struct DCC *dc
|
|||
dcc_open_query (dcc->serv, dcc->nick);
|
||||
case TYPE_CHATRECV: /* normal chat */
|
||||
dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc);
|
||||
dcc->dccchat = malloc (sizeof (struct dcc_chat));
|
||||
dcc->dccchat->pos = 0;
|
||||
dcc->dccchat = g_new0 (struct dcc_chat, 1);
|
||||
EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session,
|
||||
dcc->nick, host, NULL, NULL, 0);
|
||||
break;
|
||||
|
@ -1369,12 +1368,6 @@ dcc_proxy_connect (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
|
|||
return TRUE;
|
||||
|
||||
dcc->proxy = g_new0 (struct proxy_state, 1);
|
||||
if (!dcc->proxy)
|
||||
{
|
||||
dcc->dccstat = STAT_FAILED;
|
||||
fe_dcc_update (dcc);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
switch (prefs.hex_net_proxy_type)
|
||||
{
|
||||
|
@ -1463,9 +1456,7 @@ dcc_send_data (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
|
|||
else if (!dcc->wiotag)
|
||||
dcc->wiotag = fe_input_add (sok, FIA_WRITE, dcc_send_data, dcc);
|
||||
|
||||
buf = malloc (prefs.hex_dcc_blocksize);
|
||||
if (!buf)
|
||||
return TRUE;
|
||||
buf = g_malloc (prefs.hex_dcc_blocksize);
|
||||
|
||||
lseek (dcc->fp, dcc->pos, SEEK_SET);
|
||||
len = read (dcc->fp, buf, prefs.hex_dcc_blocksize);
|
||||
|
@ -1476,7 +1467,7 @@ dcc_send_data (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
|
|||
if (sent < 0 && !(would_block ()))
|
||||
{
|
||||
abortit:
|
||||
free (buf);
|
||||
g_free (buf);
|
||||
EMIT_SIGNAL (XP_TE_DCCSENDFAIL, dcc->serv->front_session,
|
||||
file_part (dcc->file), dcc->nick,
|
||||
errorstring (sock_error ()), NULL, 0);
|
||||
|
@ -1500,7 +1491,7 @@ abortit:
|
|||
}
|
||||
}
|
||||
|
||||
free (buf);
|
||||
g_free (buf);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1630,8 +1621,7 @@ dcc_accept (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
|
|||
case TYPE_CHATSEND:
|
||||
dcc_open_query (dcc->serv, dcc->nick);
|
||||
dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_chat, dcc);
|
||||
dcc->dccchat = malloc (sizeof (struct dcc_chat));
|
||||
dcc->dccchat->pos = 0;
|
||||
dcc->dccchat = g_new0 (struct dcc_chat, 1);
|
||||
EMIT_SIGNAL (XP_TE_DCCCONCHAT, dcc->serv->front_session,
|
||||
dcc->nick, host, NULL, NULL, 0);
|
||||
break;
|
||||
|
@ -1897,7 +1887,7 @@ dcc_send (struct session *sess, char *to, char *filename, gint64 maxcps, int pas
|
|||
}
|
||||
filename++;
|
||||
}
|
||||
dcc->nick = strdup (to);
|
||||
dcc->nick = g_strdup (to);
|
||||
if (prefs.hex_gui_autoopen_send)
|
||||
{
|
||||
if (fe_dcc_open_send_win (TRUE)) /* already open? add */
|
||||
|
@ -2005,9 +1995,8 @@ dcc_change_nick (struct server *serv, char *oldnick, char *newnick)
|
|||
{
|
||||
if (!serv->p_cmp (dcc->nick, oldnick))
|
||||
{
|
||||
if (dcc->nick)
|
||||
free (dcc->nick);
|
||||
dcc->nick = strdup (newnick);
|
||||
g_free (dcc->nick);
|
||||
dcc->nick = g_strdup (newnick);
|
||||
}
|
||||
}
|
||||
list = list->next;
|
||||
|
@ -2257,11 +2246,6 @@ static struct DCC *
|
|||
new_dcc (void)
|
||||
{
|
||||
struct DCC *dcc = g_new0 (struct DCC, 1);
|
||||
if (!dcc)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dcc->sok = -1;
|
||||
dcc->fp = -1;
|
||||
dcc_list = g_slist_prepend (dcc_list, dcc);
|
||||
|
@ -2312,7 +2296,7 @@ dcc_chat (struct session *sess, char *nick, int passive)
|
|||
dcc->serv = sess->server;
|
||||
dcc->dccstat = STAT_QUEUED;
|
||||
dcc->type = TYPE_CHATSEND;
|
||||
dcc->nick = strdup (nick);
|
||||
dcc->nick = g_strdup (nick);
|
||||
if (passive || dcc_listen_init (dcc, sess))
|
||||
{
|
||||
if (prefs.hex_gui_autoopen_chat)
|
||||
|
@ -2412,7 +2396,7 @@ dcc_add_chat (session *sess, char *nick, int port, guint32 addr, int pasvid)
|
|||
dcc->addr = addr;
|
||||
dcc->port = port;
|
||||
dcc->pasvid = pasvid;
|
||||
dcc->nick = strdup (nick);
|
||||
dcc->nick = g_strdup (nick);
|
||||
dcc->starttime = time (0);
|
||||
|
||||
EMIT_SIGNAL (XP_TE_DCCCHATOFFER, sess->server->front_session, nick,
|
||||
|
@ -2484,7 +2468,7 @@ dcc_add_file (session *sess, char *file, guint64 size, int port, char *nick, gui
|
|||
dcc->port = port;
|
||||
dcc->pasvid = pasvid;
|
||||
dcc->size = size;
|
||||
dcc->nick = strdup (nick);
|
||||
dcc->nick = g_strdup (nick);
|
||||
dcc->maxcps = prefs.hex_dcc_max_get_cps;
|
||||
|
||||
update_is_resumable (dcc);
|
||||
|
|
|
@ -456,12 +456,7 @@ session_new (server *serv, char *from, int type, int focus)
|
|||
{
|
||||
session *sess;
|
||||
|
||||
sess = malloc (sizeof (struct session));
|
||||
if (sess == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
memset (sess, 0, sizeof (struct session));
|
||||
sess = g_new0 (struct session, 1);
|
||||
|
||||
sess->server = serv;
|
||||
sess->logfd = -1;
|
||||
|
@ -543,9 +538,8 @@ exec_notify_kill (session * sess)
|
|||
waitpid (re->childpid, NULL, WNOHANG);
|
||||
fe_input_remove (re->iotag);
|
||||
close (re->myfd);
|
||||
if (re->linebuf)
|
||||
free(re->linebuf);
|
||||
free (re);
|
||||
g_free(re->linebuf);
|
||||
g_free (re);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -651,10 +645,8 @@ session_free (session *killsess)
|
|||
send_quit_or_part (killsess);
|
||||
|
||||
history_free (&killsess->history);
|
||||
if (killsess->topic)
|
||||
free (killsess->topic);
|
||||
if (killsess->current_modes)
|
||||
free (killsess->current_modes);
|
||||
g_free (killsess->topic);
|
||||
g_free (killsess->current_modes);
|
||||
|
||||
fe_session_callback (killsess);
|
||||
|
||||
|
@ -665,7 +657,7 @@ session_free (session *killsess)
|
|||
current_sess = sess_list->data;
|
||||
}
|
||||
|
||||
free (killsess);
|
||||
g_free (killsess);
|
||||
|
||||
if (!sess_list && !in_hexchat_exit)
|
||||
hexchat_exit (); /* sess_list is empty, quit! */
|
||||
|
@ -1029,11 +1021,11 @@ main (int argc, char *argv[])
|
|||
if ((strcmp (argv[i], "-d") == 0 || strcmp (argv[i], "--cfgdir") == 0)
|
||||
&& i + 1 < argc)
|
||||
{
|
||||
xdir = strdup (argv[i + 1]);
|
||||
xdir = g_strdup (argv[i + 1]);
|
||||
}
|
||||
else if (strncmp (argv[i], "--cfgdir=", 9) == 0)
|
||||
{
|
||||
xdir = strdup (argv[i] + 9);
|
||||
xdir = g_strdup (argv[i] + 9);
|
||||
}
|
||||
|
||||
if (xdir != NULL)
|
||||
|
|
|
@ -18,14 +18,14 @@
|
|||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <glib.h>
|
||||
#include "history.h"
|
||||
|
||||
void
|
||||
history_add (struct history *his, char *text)
|
||||
{
|
||||
if (his->lines[his->realpos])
|
||||
free (his->lines[his->realpos]);
|
||||
his->lines[his->realpos] = strdup (text);
|
||||
g_free (his->lines[his->realpos]);
|
||||
his->lines[his->realpos] = g_strdup (text);
|
||||
his->realpos++;
|
||||
if (his->realpos == HISTORY_SIZE)
|
||||
his->realpos = 0;
|
||||
|
@ -40,7 +40,7 @@ history_free (struct history *his)
|
|||
{
|
||||
if (his->lines[i])
|
||||
{
|
||||
free (his->lines[i]);
|
||||
g_free (his->lines[i]);
|
||||
his->lines[i] = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ identd (char *username)
|
|||
sok = socket (AF_INET, SOCK_STREAM, 0);
|
||||
if (sok == INVALID_SOCKET)
|
||||
{
|
||||
free (username);
|
||||
g_free (username);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -56,14 +56,14 @@ identd (char *username)
|
|||
if (bind (sok, (struct sockaddr *) &addr, sizeof (addr)) == SOCKET_ERROR)
|
||||
{
|
||||
closesocket (sok);
|
||||
free (username);
|
||||
g_free (username);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (listen (sok, 1) == SOCKET_ERROR)
|
||||
{
|
||||
closesocket (sok);
|
||||
free (username);
|
||||
g_free (username);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ identd (char *username)
|
|||
closesocket (sok);
|
||||
if (read_sok == INVALID_SOCKET)
|
||||
{
|
||||
free (username);
|
||||
g_free (username);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -99,7 +99,7 @@ identd (char *username)
|
|||
|
||||
sleep (1);
|
||||
closesocket (read_sok);
|
||||
free (username);
|
||||
g_free (username);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ identd_ipv6 (char *username)
|
|||
sok = socket (AF_INET6, SOCK_STREAM, 0);
|
||||
if (sok == INVALID_SOCKET)
|
||||
{
|
||||
free (username);
|
||||
g_free (username);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -132,14 +132,14 @@ identd_ipv6 (char *username)
|
|||
if (bind (sok, (struct sockaddr *) &addr, sizeof (addr)) == SOCKET_ERROR)
|
||||
{
|
||||
closesocket (sok);
|
||||
free (username);
|
||||
g_free (username);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (listen (sok, 1) == SOCKET_ERROR)
|
||||
{
|
||||
closesocket (sok);
|
||||
free (username);
|
||||
g_free (username);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -148,7 +148,7 @@ identd_ipv6 (char *username)
|
|||
closesocket (sok);
|
||||
if (read_sok == INVALID_SOCKET)
|
||||
{
|
||||
free (username);
|
||||
g_free (username);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -171,7 +171,7 @@ identd_ipv6 (char *username)
|
|||
|
||||
sleep (1);
|
||||
closesocket (read_sok);
|
||||
free (username);
|
||||
g_free (username);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -188,7 +188,7 @@ identd_start (char *username)
|
|||
{
|
||||
identd_ipv6_is_running = TRUE;
|
||||
CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) identd_ipv6,
|
||||
strdup (username), 0, &tidv6));
|
||||
g_strdup (username), 0, &tidv6));
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -196,6 +196,6 @@ identd_start (char *username)
|
|||
{
|
||||
identd_is_running = TRUE;
|
||||
CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) identd,
|
||||
strdup (username), 0, &tid));
|
||||
g_strdup (username), 0, &tid));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ static int ignored_total = 0;
|
|||
struct ignore *
|
||||
ignore_exists (char *mask)
|
||||
{
|
||||
struct ignore *ig = 0;
|
||||
struct ignore *ig = NULL;
|
||||
GSList *list;
|
||||
|
||||
list = ignore_list;
|
||||
|
@ -79,7 +79,7 @@ ignore_exists (char *mask)
|
|||
int
|
||||
ignore_add (char *mask, int type, gboolean overwrite)
|
||||
{
|
||||
struct ignore *ig = 0;
|
||||
struct ignore *ig = NULL;
|
||||
int change_only = FALSE;
|
||||
|
||||
/* first check if it's already ignored */
|
||||
|
@ -88,12 +88,9 @@ ignore_add (char *mask, int type, gboolean overwrite)
|
|||
change_only = TRUE;
|
||||
|
||||
if (!change_only)
|
||||
ig = malloc (sizeof (struct ignore));
|
||||
ig = g_new (struct ignore, 1);
|
||||
|
||||
if (!ig)
|
||||
return 0;
|
||||
|
||||
ig->mask = strdup (mask);
|
||||
ig->mask = g_strdup (mask);
|
||||
|
||||
if (!overwrite && change_only)
|
||||
ig->type |= type;
|
||||
|
@ -192,8 +189,8 @@ ignore_del (char *mask, struct ignore *ig)
|
|||
if (ig)
|
||||
{
|
||||
ignore_list = g_slist_remove (ignore_list, ig);
|
||||
free (ig->mask);
|
||||
free (ig);
|
||||
g_free (ig->mask);
|
||||
g_free (ig);
|
||||
fe_ignore_update (1);
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -265,7 +262,7 @@ ignore_read_next_entry (char *my_cfg, struct ignore *ignore)
|
|||
my_cfg = cfg_get_str (my_cfg, "mask", tbuf, sizeof (tbuf));
|
||||
if (!my_cfg)
|
||||
return NULL;
|
||||
ignore->mask = strdup (tbuf);
|
||||
ignore->mask = g_strdup (tbuf);
|
||||
}
|
||||
if (my_cfg)
|
||||
{
|
||||
|
@ -281,7 +278,7 @@ ignore_load ()
|
|||
struct ignore *ignore;
|
||||
struct stat st;
|
||||
char *cfg, *my_cfg;
|
||||
int fh, i;
|
||||
int fh;
|
||||
|
||||
fh = hexchat_open_file ("ignore.conf", O_RDONLY, 0, 0);
|
||||
if (fh != -1)
|
||||
|
@ -289,22 +286,18 @@ ignore_load ()
|
|||
fstat (fh, &st);
|
||||
if (st.st_size)
|
||||
{
|
||||
cfg = malloc (st.st_size + 1);
|
||||
cfg[0] = '\0';
|
||||
i = read (fh, cfg, st.st_size);
|
||||
if (i >= 0)
|
||||
cfg[i] = '\0';
|
||||
cfg = g_malloc0 (st.st_size + 1);
|
||||
read (fh, cfg, st.st_size);
|
||||
my_cfg = cfg;
|
||||
while (my_cfg)
|
||||
{
|
||||
ignore = malloc (sizeof (struct ignore));
|
||||
memset (ignore, 0, sizeof (struct ignore));
|
||||
ignore = g_new0 (struct ignore, 1);
|
||||
if ((my_cfg = ignore_read_next_entry (my_cfg, ignore)))
|
||||
ignore_list = g_slist_prepend (ignore_list, ignore);
|
||||
else
|
||||
free (ignore);
|
||||
g_free (ignore);
|
||||
}
|
||||
free (cfg);
|
||||
g_free (cfg);
|
||||
}
|
||||
close (fh);
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ clear_channel (session *sess)
|
|||
|
||||
if (sess->current_modes)
|
||||
{
|
||||
free (sess->current_modes);
|
||||
g_free (sess->current_modes);
|
||||
sess->current_modes = NULL;
|
||||
}
|
||||
|
||||
|
@ -81,9 +81,8 @@ clear_channel (session *sess)
|
|||
void
|
||||
set_topic (session *sess, char *topic, char *stripped_topic)
|
||||
{
|
||||
if (sess->topic)
|
||||
free (sess->topic);
|
||||
sess->topic = strdup (stripped_topic);
|
||||
g_free (sess->topic);
|
||||
sess->topic = g_strdup (stripped_topic);
|
||||
fe_set_topic (sess, topic, stripped_topic);
|
||||
}
|
||||
|
||||
|
@ -968,14 +967,14 @@ inbound_notice (server *serv, char *to, char *nick, char *msg, char *ip, int id,
|
|||
/* guess where chanserv meant to post this -sigh- */
|
||||
if (!g_ascii_strcasecmp (nick, "ChanServ") && !find_dialog (serv, nick))
|
||||
{
|
||||
char *dest = strdup (msg + 1);
|
||||
char *dest = g_strdup (msg + 1);
|
||||
char *end = strchr (dest, ']');
|
||||
if (end)
|
||||
{
|
||||
*end = 0;
|
||||
sess = find_channel (serv, dest);
|
||||
}
|
||||
free (dest);
|
||||
g_free (dest);
|
||||
}
|
||||
}
|
||||
if (!sess)
|
||||
|
@ -1454,8 +1453,7 @@ inbound_user_info (session *sess, char *chan, char *user, char *host,
|
|||
|
||||
if (user && host)
|
||||
{
|
||||
uhost = g_malloc (strlen (user) + strlen (host) + 2);
|
||||
sprintf (uhost, "%s@%s", user, host);
|
||||
uhost = g_strdup_printf ("%s@%s", user, host);
|
||||
}
|
||||
|
||||
if (chan)
|
||||
|
|
|
@ -331,7 +331,7 @@ record_chan_mode (session *sess, char sign, char mode, char *arg)
|
|||
current = g_string_erase(current, argument_offset+1, argument_length-1);
|
||||
current = g_string_insert(current, argument_offset+1, arg);
|
||||
|
||||
free(sess->current_modes);
|
||||
g_free(sess->current_modes);
|
||||
sess->current_modes = g_string_free(current, FALSE);
|
||||
}
|
||||
}
|
||||
|
@ -348,7 +348,7 @@ record_chan_mode (session *sess, char sign, char mode, char *arg)
|
|||
current = g_string_append(current, arg);
|
||||
}
|
||||
|
||||
free(sess->current_modes);
|
||||
g_free(sess->current_modes);
|
||||
sess->current_modes = g_string_free(current, FALSE);
|
||||
}
|
||||
}
|
||||
|
@ -361,7 +361,7 @@ record_chan_mode (session *sess, char sign, char mode, char *arg)
|
|||
/* remove the mode character */
|
||||
current = g_string_erase(current, mode_pos, 1);
|
||||
|
||||
free(sess->current_modes);
|
||||
g_free(sess->current_modes);
|
||||
sess->current_modes = g_string_free(current, FALSE);
|
||||
}
|
||||
}
|
||||
|
@ -374,12 +374,13 @@ mode_cat (char *str, char *addition)
|
|||
if (str)
|
||||
{
|
||||
len = strlen (str) + strlen (addition) + 2;
|
||||
str = realloc (str, len);
|
||||
str = g_realloc (str, len);
|
||||
strcat (str, " ");
|
||||
strcat (str, addition);
|
||||
} else
|
||||
}
|
||||
else
|
||||
{
|
||||
str = strdup (addition);
|
||||
str = g_strdup (addition);
|
||||
}
|
||||
|
||||
return str;
|
||||
|
@ -560,12 +561,12 @@ handle_single_mode (mode_run *mr, char sign, char mode, char *nick,
|
|||
{
|
||||
if (*arg)
|
||||
{
|
||||
char *buf = malloc (strlen (chan) + strlen (arg) + 2);
|
||||
sprintf (buf, "%s %s", chan, arg);
|
||||
char *buf = g_strdup_printf ("%s %s", chan, arg);
|
||||
EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANMODEGEN, sess, nick, outbuf,
|
||||
outbuf + 2, buf, 0, tags_data->timestamp);
|
||||
free (buf);
|
||||
} else
|
||||
g_free (buf);
|
||||
}
|
||||
else
|
||||
EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANMODEGEN, sess, nick, outbuf,
|
||||
outbuf + 2, chan, 0, tags_data->timestamp);
|
||||
}
|
||||
|
@ -635,7 +636,7 @@ mode_print_grouped (session *sess, char *nick, mode_run *mr,
|
|||
{
|
||||
EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANOP, sess, nick, mr->op, NULL, NULL, 0,
|
||||
tags_data->timestamp);
|
||||
free (mr->op);
|
||||
g_free(mr->op);
|
||||
mr->op = NULL;
|
||||
}
|
||||
|
||||
|
@ -643,7 +644,7 @@ mode_print_grouped (session *sess, char *nick, mode_run *mr,
|
|||
{
|
||||
EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANDEOP, sess, nick, mr->deop, NULL, NULL,
|
||||
0, tags_data->timestamp);
|
||||
free (mr->deop);
|
||||
g_free(mr->deop);
|
||||
mr->deop = NULL;
|
||||
}
|
||||
|
||||
|
@ -651,7 +652,7 @@ mode_print_grouped (session *sess, char *nick, mode_run *mr,
|
|||
{
|
||||
EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANVOICE, sess, nick, mr->voice, NULL, NULL,
|
||||
0, tags_data->timestamp);
|
||||
free (mr->voice);
|
||||
g_free(mr->voice);
|
||||
mr->voice = NULL;
|
||||
}
|
||||
|
||||
|
@ -659,7 +660,7 @@ mode_print_grouped (session *sess, char *nick, mode_run *mr,
|
|||
{
|
||||
EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANDEVOICE, sess, nick, mr->devoice, NULL,
|
||||
NULL, 0, tags_data->timestamp);
|
||||
free (mr->devoice);
|
||||
g_free(mr->devoice);
|
||||
mr->devoice = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -717,9 +718,8 @@ handle_mode (server * serv, char *word[], char *word_eol[],
|
|||
|
||||
if (numeric_324 && !using_front_tab)
|
||||
{
|
||||
if (sess->current_modes)
|
||||
free (sess->current_modes);
|
||||
sess->current_modes = strdup (word_eol[offset+1]);
|
||||
g_free (sess->current_modes);
|
||||
sess->current_modes = g_strdup (word_eol[offset+1]);
|
||||
}
|
||||
|
||||
sign = *modes;
|
||||
|
@ -799,30 +799,29 @@ inbound_005 (server * serv, char *word[], const message_tags_data *tags_data)
|
|||
serv->modes_per_line = atoi (word[w] + 6);
|
||||
} else if (strncmp (word[w], "CHANTYPES=", 10) == 0)
|
||||
{
|
||||
free (serv->chantypes);
|
||||
serv->chantypes = strdup (word[w] + 10);
|
||||
g_free (serv->chantypes);
|
||||
serv->chantypes = g_strdup (word[w] + 10);
|
||||
} else if (strncmp (word[w], "CHANMODES=", 10) == 0)
|
||||
{
|
||||
free (serv->chanmodes);
|
||||
serv->chanmodes = strdup (word[w] + 10);
|
||||
g_free (serv->chanmodes);
|
||||
serv->chanmodes = g_strdup (word[w] + 10);
|
||||
} else if (strncmp (word[w], "PREFIX=", 7) == 0)
|
||||
{
|
||||
pre = strchr (word[w] + 7, ')');
|
||||
if (pre)
|
||||
{
|
||||
pre[0] = 0; /* NULL out the ')' */
|
||||
free (serv->nick_prefixes);
|
||||
free (serv->nick_modes);
|
||||
serv->nick_prefixes = strdup (pre + 1);
|
||||
serv->nick_modes = strdup (word[w] + 8);
|
||||
g_free (serv->nick_prefixes);
|
||||
g_free (serv->nick_modes);
|
||||
serv->nick_prefixes = g_strdup (pre + 1);
|
||||
serv->nick_modes = g_strdup (word[w] + 8);
|
||||
} else
|
||||
{
|
||||
/* bad! some ircds don't give us the modes. */
|
||||
/* in this case, we use it only to strip /NAMES */
|
||||
serv->bad_prefix = TRUE;
|
||||
if (serv->bad_nick_prefixes)
|
||||
free (serv->bad_nick_prefixes);
|
||||
serv->bad_nick_prefixes = strdup (word[w] + 7);
|
||||
g_free (serv->bad_nick_prefixes);
|
||||
serv->bad_nick_prefixes = g_strdup (word[w] + 7);
|
||||
}
|
||||
} else if (strncmp (word[w], "WATCH=", 6) == 0)
|
||||
{
|
||||
|
@ -832,10 +831,6 @@ inbound_005 (server * serv, char *word[], const message_tags_data *tags_data)
|
|||
serv->supports_monitor = TRUE;
|
||||
} else if (strncmp (word[w], "NETWORK=", 8) == 0)
|
||||
{
|
||||
/* if (serv->networkname)
|
||||
free (serv->networkname);
|
||||
serv->networkname = strdup (word[w] + 8);*/
|
||||
|
||||
if (serv->server_session->type == SESS_SERVER)
|
||||
{
|
||||
safe_strcpy (serv->server_session->channel, word[w] + 8, CHANLEN);
|
||||
|
|
|
@ -69,18 +69,13 @@ net_store_destroy (netstore * ns)
|
|||
if (ns->ip6_hostent)
|
||||
freeaddrinfo (ns->ip6_hostent);
|
||||
#endif
|
||||
free (ns);
|
||||
g_free (ns);
|
||||
}
|
||||
|
||||
netstore *
|
||||
net_store_new (void)
|
||||
{
|
||||
netstore *ns;
|
||||
|
||||
ns = malloc (sizeof (netstore));
|
||||
memset (ns, 0, sizeof (netstore));
|
||||
|
||||
return ns;
|
||||
return g_new0 (netstore, 1);
|
||||
}
|
||||
|
||||
#ifndef USE_IPV6
|
||||
|
@ -120,8 +115,8 @@ net_resolve (netstore * ns, char *hostname, int port, char **real_host)
|
|||
ns->addr.sin_port = htons (port);
|
||||
ns->addr.sin_family = AF_INET;
|
||||
|
||||
*real_host = strdup (ns->ip4_hostent->h_name);
|
||||
return strdup (inet_ntoa (ns->addr.sin_addr));
|
||||
*real_host = g_strdup (ns->ip4_hostent->h_name);
|
||||
return g_strdup (inet_ntoa (ns->addr.sin_addr));
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -232,11 +227,11 @@ net_resolve (netstore * ns, char *hostname, int port, char **real_host)
|
|||
ipstring, sizeof (ipstring), NULL, 0, NI_NUMERICHOST);
|
||||
|
||||
if (ns->ip6_hostent->ai_canonname)
|
||||
*real_host = strdup (ns->ip6_hostent->ai_canonname);
|
||||
*real_host = g_strdup (ns->ip6_hostent->ai_canonname);
|
||||
else
|
||||
*real_host = strdup (hostname);
|
||||
*real_host = g_strdup (hostname);
|
||||
|
||||
return strdup (ipstring);
|
||||
return g_strdup (ipstring);
|
||||
}
|
||||
|
||||
/* the only thing making this interface unclean, this shitty sok4, sok6 business */
|
||||
|
@ -310,15 +305,15 @@ net_store_fill_any (netstore *ns)
|
|||
struct sockaddr_in *sin;
|
||||
|
||||
ai = ns->ip6_hostent;
|
||||
if (!ai) {
|
||||
ai = malloc (sizeof (struct addrinfo));
|
||||
memset (ai, 0, sizeof (struct addrinfo));
|
||||
if (ai == NULL)
|
||||
{
|
||||
ai = g_new0 (struct addrinfo, 1);
|
||||
ns->ip6_hostent = ai;
|
||||
}
|
||||
sin = (struct sockaddr_in *)ai->ai_addr;
|
||||
if (!sin) {
|
||||
sin = malloc (sizeof (struct sockaddr_in));
|
||||
memset (sin, 0, sizeof (struct sockaddr_in));
|
||||
if (sin == NULL)
|
||||
{
|
||||
sin = g_new0 (struct sockaddr_in, 1);
|
||||
ai->ai_addr = (struct sockaddr *)sin;
|
||||
}
|
||||
ai->ai_family = AF_INET;
|
||||
|
@ -336,15 +331,15 @@ net_store_fill_v4 (netstore *ns, guint32 addr, int port)
|
|||
struct sockaddr_in *sin;
|
||||
|
||||
ai = ns->ip6_hostent;
|
||||
if (!ai) {
|
||||
ai = malloc (sizeof (struct addrinfo));
|
||||
memset (ai, 0, sizeof (struct addrinfo));
|
||||
if (ai == NULL)
|
||||
{
|
||||
ai = g_new0 (struct addrinfo, 1);
|
||||
ns->ip6_hostent = ai;
|
||||
}
|
||||
sin = (struct sockaddr_in *)ai->ai_addr;
|
||||
if (!sin) {
|
||||
sin = malloc (sizeof (struct sockaddr_in));
|
||||
memset (sin, 0, sizeof (struct sockaddr_in));
|
||||
if (sin == NULL)
|
||||
{
|
||||
sin = g_new0 (struct sockaddr_in, 1);
|
||||
ai->ai_addr = (struct sockaddr *)sin;
|
||||
}
|
||||
ai->ai_family = AF_INET;
|
||||
|
|
|
@ -47,7 +47,7 @@ int notify_tag = 0;
|
|||
static char *
|
||||
despacify_dup (char *str)
|
||||
{
|
||||
char *p, *res = malloc (strlen (str) + 1);
|
||||
char *p, *res = g_malloc (strlen (str) + 1);
|
||||
|
||||
p = res;
|
||||
while (1)
|
||||
|
@ -70,11 +70,11 @@ notify_netcmp (char *str, void *serv)
|
|||
|
||||
if (rfc_casecmp (str, net) == 0)
|
||||
{
|
||||
free (net);
|
||||
g_free (net);
|
||||
return 0; /* finish & return FALSE from token_foreach() */
|
||||
}
|
||||
|
||||
free (net);
|
||||
g_free (net);
|
||||
return 1; /* keep going... */
|
||||
}
|
||||
|
||||
|
@ -111,14 +111,10 @@ notify_find_server_entry (struct notify *notify, struct server *serv)
|
|||
if (!notify_do_network (notify, serv))
|
||||
return NULL;
|
||||
|
||||
servnot = malloc (sizeof (struct notify_per_server));
|
||||
if (servnot)
|
||||
{
|
||||
memset (servnot, 0, sizeof (struct notify_per_server));
|
||||
servnot->server = serv;
|
||||
servnot->notify = notify;
|
||||
notify->server_list = g_slist_prepend (notify->server_list, servnot);
|
||||
}
|
||||
servnot = g_new0 (struct notify_per_server, 1);
|
||||
servnot->server = serv;
|
||||
servnot->notify = notify;
|
||||
notify->server_list = g_slist_prepend (notify->server_list, servnot);
|
||||
return servnot;
|
||||
}
|
||||
|
||||
|
@ -247,10 +243,9 @@ notify_announce_online (server * serv, struct notify_per_server *servnot,
|
|||
|
||||
/* Let's do whois with idle time (like in /quote WHOIS %s %s) */
|
||||
|
||||
char *wii_str = malloc (strlen (nick) * 2 + 2);
|
||||
sprintf (wii_str, "%s %s", nick, nick);
|
||||
char *wii_str = g_strdup_printf ("%s %s", nick, nick);
|
||||
serv->p_whois (serv, wii_str);
|
||||
free (wii_str);
|
||||
g_free (wii_str);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -596,14 +591,13 @@ notify_deluser (char *name)
|
|||
servnot = (struct notify_per_server *) notify->server_list->data;
|
||||
notify->server_list =
|
||||
g_slist_remove (notify->server_list, servnot);
|
||||
free (servnot);
|
||||
g_free (servnot);
|
||||
}
|
||||
notify_list = g_slist_remove (notify_list, notify);
|
||||
notify_watch_all (notify, FALSE);
|
||||
if (notify->networks)
|
||||
free (notify->networks);
|
||||
free (notify->name);
|
||||
free (notify);
|
||||
g_free (notify->networks);
|
||||
g_free (notify->name);
|
||||
g_free (notify);
|
||||
fe_notify_update (0);
|
||||
return 1;
|
||||
}
|
||||
|
@ -615,27 +609,18 @@ notify_deluser (char *name)
|
|||
void
|
||||
notify_adduser (char *name, char *networks)
|
||||
{
|
||||
struct notify *notify = malloc (sizeof (struct notify));
|
||||
if (notify)
|
||||
{
|
||||
memset (notify, 0, sizeof (struct notify));
|
||||
if (strlen (name) >= NICKLEN)
|
||||
{
|
||||
notify->name = malloc (NICKLEN);
|
||||
safe_strcpy (notify->name, name, NICKLEN);
|
||||
} else
|
||||
{
|
||||
notify->name = strdup (name);
|
||||
}
|
||||
if (networks)
|
||||
notify->networks = despacify_dup (networks);
|
||||
notify->server_list = 0;
|
||||
notify_list = g_slist_prepend (notify_list, notify);
|
||||
notify_checklist ();
|
||||
fe_notify_update (notify->name);
|
||||
fe_notify_update (0);
|
||||
notify_watch_all (notify, TRUE);
|
||||
}
|
||||
struct notify *notify = g_new0 (struct notify, 1);
|
||||
|
||||
notify->name = g_strndup (name, NICKLEN - 1);
|
||||
|
||||
if (networks != NULL)
|
||||
notify->networks = despacify_dup (networks);
|
||||
notify->server_list = 0;
|
||||
notify_list = g_slist_prepend (notify_list, notify);
|
||||
notify_checklist ();
|
||||
fe_notify_update (notify->name);
|
||||
fe_notify_update (0);
|
||||
notify_watch_all (notify, TRUE);
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
@ -714,7 +699,7 @@ notify_cleanup ()
|
|||
{
|
||||
notify->server_list =
|
||||
g_slist_remove (notify->server_list, servnot);
|
||||
free (servnot);
|
||||
g_free (servnot);
|
||||
nslist = notify->server_list;
|
||||
} else
|
||||
{
|
||||
|
|
|
@ -90,7 +90,7 @@ random_line (char *file_name)
|
|||
{
|
||||
nofile:
|
||||
/* reason is not a file, an actual reason! */
|
||||
return strdup (file_name);
|
||||
return g_strdup (file_name);
|
||||
}
|
||||
|
||||
/* count number of lines in file */
|
||||
|
@ -111,7 +111,7 @@ random_line (char *file_name)
|
|||
}
|
||||
while (lines > ran);
|
||||
fclose (fh);
|
||||
return strdup (buf);
|
||||
return g_strdup (buf);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -121,7 +121,7 @@ server_sendpart (server * serv, char *channel, char *reason)
|
|||
{
|
||||
reason = random_line (prefs.hex_irc_part_reason);
|
||||
serv->p_part (serv, channel, reason);
|
||||
free (reason);
|
||||
g_free (reason);
|
||||
} else
|
||||
{
|
||||
/* reason set by /quit, /close argument */
|
||||
|
@ -136,12 +136,12 @@ server_sendquit (session * sess)
|
|||
|
||||
if (!sess->quitreason)
|
||||
{
|
||||
colrea = strdup (prefs.hex_irc_quit_reason);
|
||||
colrea = g_strdup (prefs.hex_irc_quit_reason);
|
||||
check_special_chars (colrea, FALSE);
|
||||
rea = random_line (colrea);
|
||||
free (colrea);
|
||||
g_free (colrea);
|
||||
sess->server->p_quit (sess->server, rea);
|
||||
free (rea);
|
||||
g_free (rea);
|
||||
} else
|
||||
{
|
||||
/* reason set by /quit, /close argument */
|
||||
|
@ -269,7 +269,7 @@ cmd_addserver (struct session *sess, char *tbuf, char *word[], char *word_eol[])
|
|||
if (!network)
|
||||
{
|
||||
network = servlist_net_add (word[2], "", TRUE);
|
||||
network->encoding = strdup (IRC_DEFAULT_CHARSET);
|
||||
network->encoding = g_strdup (IRC_DEFAULT_CHARSET);
|
||||
}
|
||||
/* if we had the network already, check if the given server already exists */
|
||||
else if (servlist_server_find (network, word_eol[3], NULL))
|
||||
|
@ -379,11 +379,10 @@ cmd_away (struct session *sess, char *tbuf, char *word[], char *word_eol[])
|
|||
|
||||
if (sess->server->last_away_reason != reason)
|
||||
{
|
||||
if (sess->server->last_away_reason)
|
||||
free (sess->server->last_away_reason);
|
||||
g_free (sess->server->last_away_reason);
|
||||
|
||||
if (reason == word_eol[2])
|
||||
sess->server->last_away_reason = strdup (reason);
|
||||
sess->server->last_away_reason = g_strdup (reason);
|
||||
else
|
||||
sess->server->last_away_reason = reason;
|
||||
}
|
||||
|
@ -406,8 +405,7 @@ cmd_back (struct session *sess, char *tbuf, char *word[], char *word_eol[])
|
|||
PrintText (sess, _("Already marked back.\n"));
|
||||
}
|
||||
|
||||
if (sess->server->last_away_reason)
|
||||
free (sess->server->last_away_reason);
|
||||
g_free (sess->server->last_away_reason);
|
||||
sess->server->last_away_reason = NULL;
|
||||
|
||||
return TRUE;
|
||||
|
@ -1002,14 +1000,14 @@ mdehop_cb (struct User *user, multidata *data)
|
|||
static int
|
||||
cmd_mdehop (struct session *sess, char *tbuf, char *word[], char *word_eol[])
|
||||
{
|
||||
char **nicks = malloc (sizeof (char *) * sess->hops);
|
||||
char **nicks = g_new0 (char *, sess->hops);
|
||||
multidata data;
|
||||
|
||||
data.nicks = nicks;
|
||||
data.i = 0;
|
||||
tree_foreach (sess->usertree, (tree_traverse_func *)mdehop_cb, &data);
|
||||
send_channel_modes (sess, tbuf, nicks, 0, data.i, '-', 'h', 0);
|
||||
free (nicks);
|
||||
g_free (nicks);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1028,14 +1026,14 @@ mdeop_cb (struct User *user, multidata *data)
|
|||
static int
|
||||
cmd_mdeop (struct session *sess, char *tbuf, char *word[], char *word_eol[])
|
||||
{
|
||||
char **nicks = malloc (sizeof (char *) * sess->ops);
|
||||
char **nicks = g_new0(char *, sess->ops);
|
||||
multidata data;
|
||||
|
||||
data.nicks = nicks;
|
||||
data.i = 0;
|
||||
tree_foreach (sess->usertree, (tree_traverse_func *)mdeop_cb, &data);
|
||||
send_channel_modes (sess, tbuf, nicks, 0, data.i, '-', 'o', 0);
|
||||
free (nicks);
|
||||
g_free (nicks);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1045,18 +1043,13 @@ GSList *menu_list = NULL;
|
|||
static void
|
||||
menu_free (menu_entry *me)
|
||||
{
|
||||
free (me->path);
|
||||
if (me->label)
|
||||
free (me->label);
|
||||
if (me->cmd)
|
||||
free (me->cmd);
|
||||
if (me->ucmd)
|
||||
free (me->ucmd);
|
||||
if (me->group)
|
||||
free (me->group);
|
||||
if (me->icon)
|
||||
free (me->icon);
|
||||
free (me);
|
||||
g_free (me->path);
|
||||
g_free (me->label);
|
||||
g_free (me->cmd);
|
||||
g_free (me->ucmd);
|
||||
g_free (me->group);
|
||||
g_free (me->icon);
|
||||
g_free (me);
|
||||
}
|
||||
|
||||
/* strings equal? but ignore underscores */
|
||||
|
@ -1195,7 +1188,7 @@ menu_add (char *path, char *label, char *cmd, char *ucmd, int pos, int state, in
|
|||
return;
|
||||
}
|
||||
|
||||
me = malloc (sizeof (menu_entry));
|
||||
me = g_new (menu_entry, 1);
|
||||
me->pos = pos;
|
||||
me->modifier = mod;
|
||||
me->is_main = menu_is_mainmenu_root (path, &me->root_offset);
|
||||
|
@ -1203,31 +1196,26 @@ menu_add (char *path, char *label, char *cmd, char *ucmd, int pos, int state, in
|
|||
me->markup = markup;
|
||||
me->enable = enable;
|
||||
me->key = key;
|
||||
me->path = strdup (path);
|
||||
me->path = g_strdup (path);
|
||||
me->label = NULL;
|
||||
me->cmd = NULL;
|
||||
me->ucmd = NULL;
|
||||
me->group = NULL;
|
||||
me->icon = NULL;
|
||||
|
||||
if (label)
|
||||
me->label = strdup (label);
|
||||
if (cmd)
|
||||
me->cmd = strdup (cmd);
|
||||
if (ucmd)
|
||||
me->ucmd = strdup (ucmd);
|
||||
if (group)
|
||||
me->group = strdup (group);
|
||||
if (icon)
|
||||
me->icon = strdup (icon);
|
||||
me->label = g_strdup (label);
|
||||
me->cmd = g_strdup (cmd);
|
||||
me->ucmd = g_strdup (ucmd);
|
||||
me->group = g_strdup (group);
|
||||
me->icon = g_strdup (icon);
|
||||
|
||||
menu_list = g_slist_append (menu_list, me);
|
||||
label = fe_menu_add (me);
|
||||
if (label)
|
||||
{
|
||||
/* FE has given us a stripped label */
|
||||
free (me->label);
|
||||
me->label = strdup (label);
|
||||
g_free (me->label);
|
||||
me->label = g_strdup (label);
|
||||
g_free (label); /* this is from pango */
|
||||
}
|
||||
}
|
||||
|
@ -1456,7 +1444,7 @@ exec_check_process (struct session *sess)
|
|||
{
|
||||
close (sess->running_exec->myfd);
|
||||
fe_input_remove (sess->running_exec->iotag);
|
||||
free (sess->running_exec);
|
||||
g_free (sess->running_exec);
|
||||
sess->running_exec = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -1533,11 +1521,10 @@ cmd_execw (struct session *sess, char *tbuf, char *word[], char *word_eol[])
|
|||
return FALSE;
|
||||
}
|
||||
len = strlen(word_eol[2]);
|
||||
temp = malloc(len + 2);
|
||||
sprintf(temp, "%s\n", word_eol[2]);
|
||||
temp = g_strconcat (word_eol[2], "\n", NULL);
|
||||
PrintText(sess, temp);
|
||||
write(sess->running_exec->myfd, temp, len + 1);
|
||||
free(temp);
|
||||
g_free(temp);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -1561,7 +1548,7 @@ exec_handle_colors (char *buf, int len)
|
|||
if (strchr (buf, 27) == 0)
|
||||
return;
|
||||
|
||||
nbuf = malloc (len + 1);
|
||||
nbuf = g_malloc (len + 1);
|
||||
|
||||
while (i < len)
|
||||
{
|
||||
|
@ -1655,7 +1642,7 @@ norm: nbuf[j] = buf[i];
|
|||
|
||||
nbuf[j] = 0;
|
||||
memcpy (buf, nbuf, j + 1);
|
||||
free (nbuf);
|
||||
g_free (nbuf);
|
||||
}
|
||||
|
||||
#ifndef HAVE_MEMRCHR
|
||||
|
@ -1681,14 +1668,14 @@ exec_data (GIOChannel *source, GIOCondition condition, struct nbexec *s)
|
|||
len = s->buffill;
|
||||
if (len) {
|
||||
/* append new data to buffered incomplete line */
|
||||
buf = malloc(len + 2050);
|
||||
buf = g_malloc (len + 2050);
|
||||
memcpy(buf, s->linebuf, len);
|
||||
readpos = buf + len;
|
||||
free(s->linebuf);
|
||||