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/free
This commit is contained in:
TingPing
2014-12-28 06:37:25 -05:00
parent c4cb1b25ec
commit 83032b1aa3
46 changed files with 796 additions and 1082 deletions

View File

@@ -491,7 +491,7 @@ banlist_unban_inner (gpointer none, banlist_info *banl, int mode_num)
if (!gtk_tree_model_get_iter_first (model, &iter))
return 0;
masks = g_malloc (sizeof (char *) * banl->line_ct);
masks = g_new (char *, banl->line_ct);
num_sel = 0;
do
{
@@ -577,17 +577,17 @@ static void
banlist_add_selected_cb (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
{
GSList **lp = data;
GSList *list = NULL;
GtkTreeIter *copy;
if (!lp) return;
list = *lp;
copy = g_malloc (sizeof (GtkTreeIter));
g_return_if_fail (copy != NULL);
if (lp == NULL)
{
return;
}
copy = g_new (GtkTreeIter, 1);
*copy = *iter;
list = g_slist_append (list, copy);
*(GSList **)data = list;
*lp = g_slist_append (*lp, copy);
}
static void
@@ -786,14 +786,9 @@ banlist_opengui (struct session *sess)
return;
}
if (!sess->res->banlist)
if (sess->res->banlist == NULL)
{
sess->res->banlist = g_malloc0 (sizeof (banlist_info));
if (!sess->res->banlist)
{
fe_message (_("Banlist initialization failed."), FE_MSG_ERROR);
return;
}
sess->res->banlist = g_new0 (banlist_info, 1);
}
banl = sess->res->banlist;
if (banl->window)

View File

@@ -148,7 +148,7 @@ chanlist_data_free (server *serv)
data = rows->data;
g_free (data->topic);
g_free (data->collation_key);
free (data);
g_free (data);
}
g_slist_free (serv->gui->chanlist_data_stored_rows);
@@ -370,7 +370,7 @@ fe_add_chan_list (server *serv, char *chan, char *users, char *topic)
int len = strlen (chan) + 1;
/* we allocate the struct and channel string in one go */
next_row = malloc (sizeof (chanlistrow) + len);
next_row = g_malloc (sizeof (chanlistrow) + len);
memcpy (((char *)next_row) + sizeof (chanlistrow), chan, len);
next_row->topic = strip_color (topic, -1, STRIP_ALL);
next_row->collation_key = g_utf8_collate_key (chan, len-1);

View File

@@ -111,9 +111,8 @@ truncate_tab_name (char *name, int max)
if (max > 2 && g_utf8_strlen (name, -1) > max)
{
/* truncate long channel names */
buf = malloc (strlen (name) + 4);
strcpy (buf, name);
g_utf8_offset_to_pointer (buf, max)[0] = 0;
buf = g_malloc (strlen (name) + 4);
g_utf8_strncpy (buf, name, max);
strcat (buf, "..");
return buf;
}
@@ -231,7 +230,7 @@ chanview_free_ch (chanview *cv, GtkTreeIter *iter)
chan *ch;
gtk_tree_model_get (GTK_TREE_MODEL (cv->store), iter, COL_CHAN, &ch, -1);
free (ch);
g_free (ch);
}
static void
@@ -251,7 +250,7 @@ chanview_destroy (chanview *cv)
gtk_widget_destroy (cv->box);
chanview_destroy_store (cv);
free (cv);
g_free (cv);
}
static void
@@ -267,7 +266,7 @@ chanview_new (int type, int trunc_len, gboolean sort, gboolean use_icons,
{
chanview *cv;
cv = calloc (1, sizeof (chanview));
cv = g_new0 (chanview, 1);
cv->store = gtk_tree_store_new (4, G_TYPE_STRING, G_TYPE_POINTER,
PANGO_TYPE_ATTR_LIST, GDK_TYPE_PIXBUF);
cv->style = style;
@@ -368,7 +367,7 @@ chanview_add_real (chanview *cv, char *name, void *family, void *userdata,
if (!ch)
{
ch = calloc (1, sizeof (chan));
ch = g_new0 (chan, 1);
ch->userdata = userdata;
ch->family = family;
ch->cv = cv;
@@ -401,7 +400,7 @@ chanview_add (chanview *cv, char *name, void *family, void *userdata, gboolean a
ret = chanview_add_real (cv, new_name, family, userdata, allow_closure, tag, icon, NULL, NULL);
if (new_name != name)
free (new_name);
g_free (new_name);
return ret;
}
@@ -492,7 +491,7 @@ chan_rename (chan *ch, char *name, int trunc_len)
ch->cv->trunc_len = trunc_len;
if (new_name != name)
free (new_name);
g_free (new_name);
}
/* this thing is overly complicated */
@@ -645,7 +644,7 @@ chan_remove (chan *ch, gboolean force)
ch->cv->size--;
gtk_tree_store_remove (ch->cv->store, &ch->iter);
free (ch);
g_free (ch);
return TRUE;
}

View File

@@ -727,7 +727,7 @@ custom_list_resort (CustomList * custom_list)
custom_list);
/* let other objects know about the new order */
neworder = malloc (sizeof (gint) * custom_list->num_rows);
neworder = g_new (gint, custom_list->num_rows);
for (i = custom_list->num_rows - 1; i >= 0; i--)
{
@@ -744,7 +744,7 @@ custom_list_resort (CustomList * custom_list)
gtk_tree_model_rows_reordered (GTK_TREE_MODEL (custom_list), path, NULL,
neworder);
gtk_tree_path_free (path);
free (neworder);
g_free (neworder);
}
void

View File

@@ -130,25 +130,25 @@ dcc_send_filereq_file (struct my_dcc_send *mdc, char *file)
dcc_send (mdc->sess, mdc->nick, file, mdc->maxcps, mdc->passive);
else
{
free (mdc->nick);
free (mdc);
g_free (mdc->nick);
g_free (mdc);
}
}
void
fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive)
{
char tbuf[128];
struct my_dcc_send *mdc;
mdc = malloc (sizeof (*mdc));
char* tbuf = g_strdup_printf (_("Send file to %s"), nick);
struct my_dcc_send *mdc = g_new (struct my_dcc_send, 1);
mdc->sess = sess;
mdc->nick = strdup (nick);
mdc->nick = g_strdup (nick);
mdc->maxcps = maxcps;
mdc->passive = passive;
snprintf (tbuf, sizeof tbuf, _("Send file to %s"), nick);
gtkutil_file_req (tbuf, dcc_send_filereq_file, mdc, prefs.hex_dcc_dir, NULL, FRF_MULTIPLE|FRF_FILTERISINITIAL);
g_free (tbuf);
}
static void

View File

@@ -224,7 +224,7 @@ fe_args (int argc, char *argv[])
/* cuts can. So we have to set the current dir manually, to the path */
/* of the exe. */
{
char *tmp = strdup (argv[0]);
char *tmp = g_strdup (argv[0]);
char *sl;
sl = strrchr (tmp, G_DIR_SEPARATOR);
@@ -233,7 +233,7 @@ fe_args (int argc, char *argv[])
*sl = 0;
chdir (tmp);
}
free (tmp);
g_free (tmp);
}
#endif
@@ -424,8 +424,7 @@ fe_new_window (session *sess, int focus)
void
fe_new_server (struct server *serv)
{
serv->gui = malloc (sizeof (struct server_gui));
memset (serv->gui, 0, sizeof (struct server_gui));
serv->gui = g_new0 (struct server_gui, 1);
}
void
@@ -510,18 +509,15 @@ fe_set_topic (session *sess, char *topic, char *stripped_topic)
}
else
{
if (sess->res->topic_text)
{
free (sess->res->topic_text);
}
g_free (sess->res->topic_text);
if (prefs.hex_text_stripcolor_topic)
{
sess->res->topic_text = strdup (stripped_topic);
sess->res->topic_text = g_strdup (stripped_topic);
}
else
{
sess->res->topic_text = strdup (topic);
sess->res->topic_text = g_strdup (topic);
}
}
}
@@ -547,9 +543,8 @@ fe_update_mode_entry (session *sess, GtkWidget *entry, char **text, char *new_te
{
if (sess->gui->is_tab)
{
if (*text)
free (*text);
*text = strdup (new_text);
g_free (*text);
*text = g_strdup (new_text);
}
}
}
@@ -721,7 +716,7 @@ fe_lastlog (session *sess, session *lastlog_sess, char *sstr, gtk_xtext_search_f
lbuf->search_lnee = strlen (lbuf->search_nee);
}
lbuf->search_flags = flags;
lbuf->search_text = strdup (sstr);
lbuf->search_text = g_strdup (sstr);
gtk_xtext_lastlog (lbuf, buf);
}
@@ -761,9 +756,8 @@ fe_set_lag (server *serv, long lag)
sess = list->data;
if (sess->server == serv)
{
if (sess->res->lag_tip)
free (sess->res->lag_tip);
sess->res->lag_tip = strdup (lagtip);
g_free (sess->res->lag_tip);
sess->res->lag_tip = g_strdup (lagtip);
if (!sess->gui->is_tab || current_tab == sess)
{
@@ -777,9 +771,8 @@ fe_set_lag (server *serv, long lag)
} else
{
sess->res->lag_value = per;
if (sess->res->lag_text)
free (sess->res->lag_text);
sess->res->lag_text = strdup (lagtext);
g_free (sess->res->lag_text);
sess->res->lag_text = g_strdup (lagtext);
}
}
list = list->next;
@@ -807,9 +800,8 @@ fe_set_throttle (server *serv)
snprintf (tbuf, sizeof (tbuf) - 1, _("%d bytes"), serv->sendq_len);
snprintf (tip, sizeof (tip) - 1, _("Network send queue: %d bytes"), serv->sendq_len);
if (sess->res->queue_tip)
free (sess->res->queue_tip);
sess->res->queue_tip = strdup (tip);
g_free (sess->res->queue_tip);
sess->res->queue_tip = g_strdup (tip);
if (!sess->gui->is_tab || current_tab == sess)
{
@@ -823,9 +815,8 @@ fe_set_throttle (server *serv)
} else
{
sess->res->queue_value = per;
if (sess->res->queue_text)
free (sess->res->queue_text);
sess->res->queue_text = strdup (tbuf);
g_free (sess->res->queue_text);
sess->res->queue_text = g_strdup (tbuf);
}
}
list = list->next;
@@ -977,9 +968,8 @@ fe_set_inputbox_contents (session *sess, char *text)
SPELL_ENTRY_SET_TEXT (sess->gui->input_box, text);
} else
{
if (sess->res->input_text)
free (sess->res->input_text);
sess->res->input_text = strdup (text);
g_free (sess->res->input_text);
sess->res->input_text = g_strdup (text);
}
}

View File

@@ -565,7 +565,7 @@ key_dialog_save (GtkWidget *wid, gpointer userdata)
{
do
{
kb = (struct key_binding *) g_malloc0 (sizeof (struct key_binding));
kb = g_new0 (struct key_binding, 1);
gtk_tree_model_get (GTK_TREE_MODEL (store), &iter, ACCEL_COLUMN, &accel,
ACTION_COLUMN, &actiontext,
@@ -945,7 +945,7 @@ key_load_kbs (void)
fd = hexchat_open_file ("keybindings.conf", O_RDONLY, 0, 0);
if (fd < 0)
{
ibuf = strdup (default_kb_cfg);
ibuf = g_strdup (default_kb_cfg);
size = strlen (default_kb_cfg);
}
else
@@ -956,7 +956,7 @@ key_load_kbs (void)
return 1;
}
ibuf = malloc (st.st_size);
ibuf = g_malloc(st.st_size);
read (fd, ibuf, st.st_size);
size = st.st_size;
close (fd);
@@ -978,7 +978,7 @@ key_load_kbs (void)
switch (state)
{
case KBSTATE_MOD:
kb = (struct key_binding *) g_malloc0 (sizeof (struct key_binding));
kb = g_new0 (struct key_binding, 1);
/* New format */
if (strncmp (buf, "ACCEL=", 6) == 0)
@@ -1009,7 +1009,7 @@ key_load_kbs (void)
keyval = gdk_keyval_from_name (buf);
if (keyval == 0)
{
free (ibuf);
g_free (ibuf);
return 2;
}
@@ -1025,7 +1025,7 @@ key_load_kbs (void)
if (kb->action == KEY_MAX_ACTIONS + 1)
{
free (ibuf);
g_free (ibuf);
return 3;
}
@@ -1042,7 +1042,7 @@ key_load_kbs (void)
if (buf[0] != 'D')
{
free (ibuf);
g_free (ibuf);
return 4;
}
@@ -1068,12 +1068,10 @@ key_load_kbs (void)
len -= 3;
if (state == KBSTATE_DT1)
{
kb->data1 = g_malloc (len);
memcpy (kb->data1, &buf[3], len);
kb->data1 = g_strndup (&buf[3], len);
} else
{
kb->data2 = g_malloc (len);
memcpy (kb->data2, &buf[3], len);
kb->data2 = g_strndup (&buf[3], len);
}
} else if (buf[2] == '!')
{
@@ -1096,12 +1094,12 @@ key_load_kbs (void)
continue;
}
}
free (ibuf);
g_free (ibuf);
return 0;
corrupt_file:
free (ibuf);
free (kb);
g_free (ibuf);
g_free (kb);
return 5;
}

View File

@@ -62,7 +62,7 @@ static void
gtkutil_file_req_destroy (GtkWidget * wid, struct file_req *freq)
{
freq->callback (freq->userdata, NULL);
free (freq);
g_free (freq);
}
static void
@@ -255,7 +255,7 @@ gtkutil_file_req (const char *title, void *callback, void *userdata, char *filte
gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (dialog), get_xdir (), NULL);
freq = malloc (sizeof (struct file_req));
freq = g_new (struct file_req, 1);
freq->dialog = dialog;
freq->flags = flags;
freq->callback = callback;

View File

@@ -312,7 +312,7 @@ mg_inputbox_cb (GtkWidget *igad, session_gui *gui)
if (cmd[0] == 0)
return;
cmd = strdup (cmd);
cmd = g_strdup (cmd);
/* avoid recursive loop */
ignore = TRUE;
@@ -340,7 +340,7 @@ mg_inputbox_cb (GtkWidget *igad, session_gui *gui)
if (sess)
handle_multiline (sess, cmd, TRUE, FALSE);
free (cmd);
g_free (cmd);
}
static gboolean
@@ -609,14 +609,14 @@ mg_unpopulate (session *sess)
gui = sess->gui;
res = sess->res;
res->input_text = strdup (SPELL_ENTRY_GET_TEXT (gui->input_box));
res->topic_text = strdup (gtk_entry_get_text (GTK_ENTRY (gui->topic_entry)));
res->limit_text = strdup (gtk_entry_get_text (GTK_ENTRY (gui->limit_entry)));
res->key_text = strdup (gtk_entry_get_text (GTK_ENTRY (gui->key_entry)));
res->input_text = g_strdup (SPELL_ENTRY_GET_TEXT (gui->input_box));
res->topic_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (gui->topic_entry)));
res->limit_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (gui->limit_entry)));
res->key_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (gui->key_entry)));
if (gui->laginfo)
res->lag_text = strdup (gtk_label_get_text (GTK_LABEL (gui->laginfo)));
res->lag_text = g_strdup (gtk_label_get_text (GTK_LABEL (gui->laginfo)));
if (gui->throttleinfo)
res->queue_text = strdup (gtk_label_get_text (GTK_LABEL (gui->throttleinfo)));
res->queue_text = g_strdup (gtk_label_get_text (GTK_LABEL (gui->throttleinfo)));
for (i = 0; i < NUM_FLAG_WIDS - 1; i++)
res->flag_wid_state[i] = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gui->flag_wid[i]));
@@ -645,7 +645,7 @@ mg_restore_label (GtkWidget *label, char **text)
if (*text)
{
gtk_label_set_text (GTK_LABEL (label), *text);
free (*text);
g_free (*text);
*text = NULL;
} else
{
@@ -659,7 +659,7 @@ mg_restore_entry (GtkWidget *entry, char **text)
if (*text)
{
gtk_entry_set_text (GTK_ENTRY (entry), *text);
free (*text);
g_free (*text);
*text = NULL;
} else
{
@@ -674,7 +674,7 @@ mg_restore_speller (GtkWidget *entry, char **text)
if (*text)
{
SPELL_ENTRY_SET_TEXT (entry, *text);
free (*text);
g_free (*text);
*text = NULL;
} else
{
@@ -1331,8 +1331,7 @@ mg_close_gen (chan *ch, GtkWidget *box)
{
char *title = g_object_get_data (G_OBJECT (box), "title");
if (title)
free (title);
g_free (title);
if (!ch)
ch = g_object_get_data (G_OBJECT (box), "ch");
if (ch)
@@ -1640,7 +1639,7 @@ mg_dnd_drop_file (session *sess, char *target, char *uri)
{
char *p, *data, *next, *fname;
p = data = strdup (uri);
p = data = g_strdup (uri);
while (*p)
{
next = strchr (p, '\r');
@@ -1667,7 +1666,7 @@ mg_dnd_drop_file (session *sess, char *target, char *uri)
if (*p == '\n')
p++;
}
free (data);
g_free (data);
}
@@ -1837,7 +1836,7 @@ mg_changui_destroy (session *sess)
/* it fixes: Gdk-CRITICAL **: gdk_colormap_get_screen: */
/* assertion `GDK_IS_COLORMAP (cmap)' failed */
ret = sess->gui->window;
free (sess->gui);
g_free (sess->gui);
sess->gui = NULL;
}
return ret;
@@ -3332,7 +3331,7 @@ mg_add_generic_tab (char *name, char *title, void *family, GtkWidget *box)
ch = chanview_add (mg_gui->chanview, name, NULL, box, TRUE, TAG_UTIL, pix_tree_util);
chan_set_color (ch, plain_list);
/* FIXME: memory leak */
g_object_set_data (G_OBJECT (box), "title", strdup (title));
g_object_set_data (G_OBJECT (box), "title", g_strdup (title));
g_object_set_data (G_OBJECT (box), "ch", ch);
if (prefs.hex_gui_tab_newtofront)
@@ -3395,7 +3394,7 @@ fe_clear_channel (session *sess)
{
if (sess->res->topic_text)
{
free (sess->res->topic_text);
g_free (sess->res->topic_text);
sess->res->topic_text = NULL;
}
}
@@ -3508,24 +3507,24 @@ mg_changui_new (session *sess, restore_gui *res, int tab, int focus)
session_gui *gui;
struct User *user = NULL;
if (!res)
if (res == NULL)
{
res = malloc (sizeof (restore_gui));
memset (res, 0, sizeof (restore_gui));
res = g_new0 (restore_gui, 1);
}
sess->res = res;
if (!sess->server->front_session)
if (sess->server->front_session == NULL)
{
sess->server->front_session = sess;
}
if (!is_channel (sess->server, sess->channel))
user = userlist_find_global (sess->server, sess->channel);
if (!tab)
{
gui = malloc (sizeof (session_gui));
memset (gui, 0, sizeof (session_gui));
gui = g_new0 (session_gui, 1);
gui->is_tab = FALSE;
sess->gui = gui;
mg_create_topwindow (sess);
@@ -3631,8 +3630,8 @@ mg_set_title (GtkWidget *vbox, char *title) /* for non-irc tab/window only */
old = g_object_get_data (G_OBJECT (vbox), "title");
if (old)
{
g_object_set_data (G_OBJECT (vbox), "title", strdup (title));
free (old);
g_object_set_data (G_OBJECT (vbox), "title", g_strdup (title));
g_free (old);
} else
{
gtk_window_set_title (GTK_WINDOW (vbox), title);
@@ -3650,7 +3649,7 @@ fe_server_callback (server *serv)
if (serv->gui->rawlog_window)
mg_close_gen (NULL, serv->gui->rawlog_window);
free (serv->gui);
g_free (serv->gui);
}
/* called when a session is being killed */
@@ -3661,34 +3660,21 @@ fe_session_callback (session *sess)
if (sess->res->banlist && sess->res->banlist->window)
mg_close_gen (NULL, sess->res->banlist->window);
if (sess->res->input_text)
free (sess->res->input_text);
if (sess->res->topic_text)
free (sess->res->topic_text);
if (sess->res->limit_text)
free (sess->res->limit_text);
if (sess->res->key_text)
free (sess->res->key_text);
if (sess->res->queue_text)
free (sess->res->queue_text);
if (sess->res->queue_tip)
free (sess->res->queue_tip);
if (sess->res->lag_text)
free (sess->res->lag_text);
if (sess->res->lag_tip)
free (sess->res->lag_tip);
g_free (sess->res->input_text);
g_free (sess->res->topic_text);
g_free (sess->res->limit_text);
g_free (sess->res->key_text);
g_free (sess->res->queue_text);
g_free (sess->res->queue_tip);
g_free (sess->res->lag_text);
g_free (sess->res->lag_tip);
if (sess->gui->bartag)
fe_timeout_remove (sess->gui->bartag);
if (sess->gui != &static_mg_gui)
free (sess->gui);
free (sess->res);
g_free (sess->gui);
g_free (sess->res);
}
/* ===== DRAG AND DROP STUFF ===== */

View File

@@ -137,7 +137,7 @@ nick_command_parse (session *sess, char *cmd, char *nick, char *allnick)
/* this can't overflow, since popup->cmd is only 256 */
len = strlen (cmd) + strlen (nick) + strlen (allnick) + 512;
buf = malloc (len);
buf = g_malloc (len);
auto_insert (buf, len, cmd, 0, 0, allnick, sess->channel, "",
server_get_network (sess->server, TRUE), host,
@@ -145,7 +145,7 @@ nick_command_parse (session *sess, char *cmd, char *nick, char *allnick)
nick_command (sess, buf);
free (buf);
g_free (buf);
}
/* userlist button has been clicked */
@@ -166,11 +166,12 @@ userlist_button_cb (GtkWidget * button, char *cmd)
if (sess->type == SESS_DIALOG)
{
/* fake a selection */
nicks = malloc (sizeof (char *) * 2);
nicks = g_new (char *, 2);
nicks[0] = g_strdup (sess->channel);
nicks[1] = NULL;
num_sel = 1;
} else
}
else
{
/* find number of selected rows */
nicks = userlist_selection_list (sess->gui->user_tree, &num_sel);
@@ -178,14 +179,13 @@ userlist_button_cb (GtkWidget * button, char *cmd)
{
nick_command_parse (sess, cmd, "", "");
if (nicks)
free (nicks);
g_free (nicks);
return;
}
}
/* create "allnicks" string */
allnicks = malloc (((NICKLEN + 1) * num_sel) + 1);
allnicks = g_malloc (((NICKLEN + 1) * num_sel) + 1);
*allnicks = 0;
i = 0;
@@ -218,8 +218,8 @@ userlist_button_cb (GtkWidget * button, char *cmd)
g_free (nicks[num_sel]);
}
free (nicks);
free (allnicks);
g_free (nicks);
g_free (allnicks);
}
/* a popup-menu-item has been selected */
@@ -726,9 +726,8 @@ menu_nickmenu (session *sess, GdkEventButton *event, char *nick, int num_sel)
struct User *user;
GtkWidget *submenu, *menu = gtk_menu_new ();
if (str_copy)
free (str_copy);
str_copy = strdup (nick);
g_free (str_copy);
str_copy = g_strdup (nick);
submenu_list = 0; /* first time through, might not be 0 */
@@ -946,20 +945,19 @@ menu_urlmenu (GdkEventButton *event, char *url)
GtkWidget *menu;
char *tmp, *chop;
if (str_copy)
free (str_copy);
str_copy = strdup (url);
g_free (str_copy);
str_copy = g_strdup (url);
menu = gtk_menu_new ();
/* more than 51 chars? Chop it */
if (g_utf8_strlen (str_copy, -1) >= 52)
{
tmp = strdup (str_copy);
tmp = g_strdup (str_copy);
chop = g_utf8_offset_to_pointer (tmp, 48);
chop[0] = chop[1] = chop[2] = '.';
chop[3] = 0;
menu_quick_item (0, tmp, menu, XCMENU_SHADED, 0, 0);
free (tmp);
g_free (tmp);
} else
{
menu_quick_item (0, str_copy, menu, XCMENU_SHADED, 0, 0);
@@ -1024,9 +1022,8 @@ menu_chanmenu (struct session *sess, GdkEventButton * event, char *chan)
if (find_channel (sess->server, chan))
is_joined = TRUE;
if (str_copy)
free (str_copy);
str_copy = strdup (chan);
g_free (str_copy);
str_copy = g_strdup (chan);
menu = gtk_menu_new ();
@@ -1072,9 +1069,8 @@ menu_addfavoritemenu (server *serv, GtkWidget *menu, char *channel, gboolean ist
if (channel != str_copy)
{
if (str_copy)
free (str_copy);
str_copy = strdup (channel);
g_free (str_copy);
str_copy = g_strdup (channel);
}
if (istree)

View File

@@ -106,7 +106,7 @@ palette_alloc (GtkWidget * widget)
void
palette_load (void)
{
int i, j, l, fh;
int i, j, fh;
char prefname[256];
struct stat st;
char *cfg;
@@ -116,35 +116,29 @@ palette_load (void)
if (fh != -1)
{
fstat (fh, &st);
cfg = malloc (st.st_size + 1);
if (cfg)
cfg = g_malloc0 (st.st_size + 1);
read (fh, cfg, st.st_size);
/* mIRC colors 0-31 are here */
for (i = 0; i < 32; i++)
{
cfg[0] = '\0';
l = read (fh, cfg, st.st_size);
if (l >= 0)
cfg[l] = '\0';
/* mIRC colors 0-31 are here */
for (i = 0; i < 32; i++)
{
snprintf (prefname, sizeof prefname, "color_%d", i);
cfg_get_color (cfg, prefname, &red, &green, &blue);
colors[i].red = red;
colors[i].green = green;
colors[i].blue = blue;
}
/* our special colors are mapped at 256+ */
for (i = 256, j = 32; j < MAX_COL+1; i++, j++)
{
snprintf (prefname, sizeof prefname, "color_%d", i);
cfg_get_color (cfg, prefname, &red, &green, &blue);
colors[j].red = red;
colors[j].green = green;
colors[j].blue = blue;
}
free (cfg);
snprintf (prefname, sizeof prefname, "color_%d", i);
cfg_get_color (cfg, prefname, &red, &green, &blue);
colors[i].red = red;
colors[i].green = green;
colors[i].blue = blue;
}
/* our special colors are mapped at 256+ */
for (i = 256, j = 32; j < MAX_COL+1; i++, j++)
{
snprintf (prefname, sizeof prefname, "color_%d", i);
cfg_get_color (cfg, prefname, &red, &green, &blue);
colors[j].red = red;
colors[j].green = green;
colors[j].blue = blue;
}
g_free (cfg);
close (fh);
}
}

View File

@@ -142,14 +142,14 @@ plugingui_load_cb (session *sess, char *file)
{
if (file)
{
char *buf = malloc (strlen (file) + 9);
char *buf;
if (strchr (file, ' '))
sprintf (buf, "LOAD \"%s\"", file);
buf = g_strdup_printf ("LOAD \"%s\"", file);
else
sprintf (buf, "LOAD %s", file);
buf = g_strdup_printf ("LOAD %s", file);
handle_command (sess, buf, FALSE);
free (buf);
g_free (buf);
}
}
@@ -173,7 +173,7 @@ plugingui_loadbutton_cb (GtkWidget * wid, gpointer unused)
static void
plugingui_unload (GtkWidget * wid, gpointer unused)
{
char *modname, *file, *buf;
char *modname, *file;
GtkTreeView *view;
GtkTreeIter iter;
@@ -186,16 +186,17 @@ plugingui_unload (GtkWidget * wid, gpointer unused)
{
if (plugin_kill (modname, FALSE) == 2)
fe_message (_("That plugin is refusing to unload.\n"), FE_MSG_ERROR);
} else
}
else
{
char *buf;
/* let python.so or perl.so handle it */
buf = malloc (strlen (file) + 10);
if (strchr (file, ' '))
sprintf (buf, "UNLOAD \"%s\"", file);
buf = g_strdup_printf ("UNLOAD \"%s\"", file);
else
sprintf (buf, "UNLOAD %s", file);
buf = g_strdup_printf ("UNLOAD %s", file);
handle_command (current_sess, buf, FALSE);
free (buf);
g_free (buf);
}
g_free (modname);
@@ -209,14 +210,14 @@ plugingui_reloadbutton_cb (GtkWidget *wid, GtkTreeView *view)
if (file)
{
char *buf = malloc (strlen (file) + 9);
char *buf;
if (strchr (file, ' '))
sprintf (buf, "RELOAD \"%s\"", file);
buf = g_strdup_printf ("RELOAD \"%s\"", file);
else
sprintf (buf, "RELOAD %s", file);
buf = g_strdup_printf ("RELOAD %s", file);
handle_command (current_sess, buf, FALSE);
free (buf);
g_free (buf);
g_free (file);
}
}

View File

@@ -497,7 +497,7 @@ servlist_addnet_cb (GtkWidget *item, GtkTreeView *treeview)
ircnet *net;
net = servlist_net_add (_("New Network"), "", TRUE);
net->encoding = strdup (IRC_DEFAULT_CHARSET);
net->encoding = g_strdup (IRC_DEFAULT_CHARSET);
servlist_server_add (net, "newserver/6667");
store = (GtkListStore *)gtk_tree_view_get_model (treeview);
@@ -668,13 +668,12 @@ servlist_favor (GtkWidget *button, gpointer none)
static void
servlist_update_from_entry (char **str, GtkWidget *entry)
{
if (*str)
free (*str);
g_free (*str);
if (gtk_entry_get_text (GTK_ENTRY (entry))[0] == 0)
*str = NULL;
else
*str = strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
*str = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
}
static void
@@ -1203,9 +1202,9 @@ servlist_celledit_cb (GtkCellRendererText *cell, gchar *arg1, gchar *arg2,
}
netname = net->name;
net->name = strdup (arg2);
net->name = g_strdup (arg2);
gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, net->name, -1);
free (netname);
g_free (netname);
}
gtk_tree_path_free (path);
@@ -1311,7 +1310,7 @@ servlist_sanitize_hostname (char *host)
{
char *ret, *c, *e;
ret = strdup (host);
ret = g_strdup (host);
c = strchr (ret, ':');
e = strrchr (ret, ':');
@@ -1371,7 +1370,7 @@ servlist_editserver_cb (GtkCellRendererText *cell, gchar *name, gchar *newval, g
servname = serv->hostname;
serv->hostname = servlist_sanitize_hostname (newval);
gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, serv->hostname, -1);
free (servname);
g_free (servname);
}
}
@@ -1409,7 +1408,7 @@ servlist_editcommand_cb (GtkCellRendererText *cell, gchar *name, gchar *newval,
cmd = entry->command;
entry->command = servlist_sanitize_command (newval);
gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, entry->command, -1);
free (cmd);
g_free (cmd);
}
}
@@ -1508,9 +1507,8 @@ servlist_combo_cb (GtkEntry *entry, gpointer userdata)
if (!selected_net)
return;
if (selected_net->encoding)
free (selected_net->encoding);
selected_net->encoding = strdup (gtk_entry_get_text (entry));
g_free (selected_net->encoding);
selected_net->encoding = g_strdup (gtk_entry_get_text (entry));
}
/* Fills up the network's authentication type so that it's guaranteed to be either NULL or a valid value. */

View File

@@ -1684,9 +1684,8 @@ setup_snd_changed_cb (GtkEntry *ent, GtkTreeView *tree)
return;
/* get the new sound file */
if (sound_files[n])
free (sound_files[n]);
sound_files[n] = strdup (gtk_entry_get_text (GTK_ENTRY (ent)));
g_free (sound_files[n]);
sound_files[n] = g_strdup (gtk_entry_get_text (GTK_ENTRY (ent)));
/* update the TreeView list */
store = (GtkListStore *)gtk_tree_view_get_model (tree);

View File

@@ -292,7 +292,7 @@ insert_hiddenchar (SexySpellEntry *entry, guint start, guint end)
* is 'hidden' */
#if 0
PangoAttribute *hattr;
PangoRectangle *rect = g_malloc (sizeof (PangoRectangle));
PangoRectangle *rect = g_new (PangoRectangle, 1);
rect->x = 0;
rect->y = 0;

View File

@@ -81,12 +81,12 @@ PrintTextLine (xtext_buffer *xtbuf, unsigned char *text, int len, int indent, ti
timet = time (0);
stamp_size = get_stamp_str (prefs.hex_stamp_text_format, timet, &stamp);
new_text = malloc (len + stamp_size + 1);
new_text = g_malloc (len + stamp_size + 1);
memcpy (new_text, stamp, stamp_size);
g_free (stamp);
memcpy (new_text + stamp_size, text, len);
gtk_xtext_append (xtbuf, new_text, len + stamp_size, timet);
free (new_text);
g_free (new_text);
} else
gtk_xtext_append (xtbuf, text, len, timet);
return;
@@ -173,13 +173,12 @@ pevent_edited (GtkCellRendererText *render, gchar *pathstr, gchar *new_text, gpo
}
if (m > (te[sig].num_args & 0x7f))
{
free (out);
out = malloc (4096);
snprintf (out, 4096,
_("This signal is only passed %d args, $%d is invalid"),
te[sig].num_args & 0x7f, m);
g_free (out);
out = g_strdup_printf (
_("This signal is only passed %d args, $%d is invalid"),
te[sig].num_args & 0x7f, m);
fe_message (out, FE_MSG_WARN);
free (out);
g_free (out);
return;
}
@@ -188,23 +187,20 @@ pevent_edited (GtkCellRendererText *render, gchar *pathstr, gchar *new_text, gpo
gtk_list_store_set (GTK_LIST_STORE (model), &iter, TEXT_COLUMN, new_text, -1);
gtk_tree_path_free (path);
if (pntevts_text[sig])
free (pntevts_text[sig]);
if (pntevts[sig])
free (pntevts[sig]);
g_free (pntevts_text[sig]);
g_free (pntevts[sig]);
pntevts_text[sig] = malloc (len + 1);
memcpy (pntevts_text[sig], text, len + 1);
pntevts_text[sig] = g_strdup (text);
pntevts[sig] = out;
out = malloc (len + 2);
out = g_malloc (len + 2);
memcpy (out, text, len + 1);
out[len] = '\n';
out[len + 1] = 0;
check_special_chars (out, TRUE);
PrintTextRaw (xtext->buffer, out, 0, 0);
free (out);
g_free (out);
/* Scroll to bottom */
gtk_adjustment_set_value (xtext->adj, gtk_adjustment_get_upper (xtext->adj));
@@ -328,14 +324,14 @@ pevent_test_cb (GtkWidget * wid, GtkWidget * twid)
text = _(pntevts_text[n]);
len = strlen (text);
out = malloc (len + 2);
out = g_malloc (len + 2);
memcpy (out, text, len + 1);
out[len] = '\n';
out[len + 1] = 0;
check_special_chars (out, TRUE);
PrintTextRaw (GTK_XTEXT (twid)->buffer, out, 0, 0);
free (out);
g_free (out);
}
}

View File

@@ -188,7 +188,7 @@ userlist_selection_list (GtkWidget *widget, int *num_ret)
if (num_sel < 1)
return NULL;
nicks = malloc (sizeof (char *) * (num_sel + 1));
nicks = g_new (char *, num_sel + 1);
i = 0;
gtk_tree_model_get_iter_first (model, &iter);
@@ -348,9 +348,9 @@ fe_userlist_insert (session *sess, struct User *newuser, int row, int sel)
nick = newuser->nick;
if (!prefs.hex_gui_ulist_icons)
{
nick = malloc (strlen (newuser->nick) + 2);
nick = g_malloc (strlen (newuser->nick) + 2);
nick[0] = newuser->prefix[0];
if (!nick[0] || nick[0] == ' ')
if (nick[0] == '\0' || nick[0] == ' ')
strcpy (nick, newuser->nick);
else
strcpy (nick + 1, newuser->nick);
@@ -367,7 +367,7 @@ fe_userlist_insert (session *sess, struct User *newuser, int row, int sel)
if (!prefs.hex_gui_ulist_icons)
{
free (nick);
g_free (nick);
}
/* is it me? */
@@ -525,7 +525,7 @@ userlist_click_cb (GtkWidget *widget, GdkEventButton *event, gpointer userdata)
i--;
g_free (nicks[i]);
}
free (nicks);
g_free (nicks);
}
return TRUE;
}
@@ -542,13 +542,13 @@ userlist_click_cb (GtkWidget *widget, GdkEventButton *event, gpointer userdata)
i--;
g_free (nicks[i]);
}
free (nicks);
g_free (nicks);
return TRUE;
}
if (nicks)
{
g_free (nicks[0]);
free (nicks);
g_free (nicks);
}
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
@@ -567,7 +567,7 @@ userlist_click_cb (GtkWidget *widget, GdkEventButton *event, gpointer userdata)
i--;
g_free (nicks[i]);
}
free (nicks);
g_free (nicks);
}
} else
{

View File

@@ -1711,7 +1711,7 @@ gtk_xtext_get_word_adjust (GtkXText *xtext, int x, int y, textentry **word_ent,
}
}
}
g_slist_free_full (slp, free);
g_slist_free_full (slp, g_free);
return word_type;
}
@@ -1857,7 +1857,7 @@ gtk_xtext_set_clip_owner (GtkWidget * xtext, GdkEventButton * event)
gtk_selection_owner_set (xtext, GDK_SELECTION_SECONDARY, event ? event->time : GDK_CURRENT_TIME);
}
free (str);
g_free (str);
}
}
@@ -2111,7 +2111,7 @@ gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret)
return NULL;
/* now allocate mem and copy buffer */
pos = txt = malloc (len);
pos = txt = g_malloc (len);
ent = buf->last_ent_start;
while (ent)
{
@@ -2151,10 +2151,11 @@ gtk_xtext_selection_get_text (GtkXText *xtext, int *len_ret)
/*stripped = gtk_xtext_conv_color (txt, strlen (txt), &len);*/
stripped = txt;
len = strlen (txt);
} else
}
else
{
stripped = gtk_xtext_strip_color (txt, strlen (txt), NULL, &len, NULL, FALSE);
free (txt);
g_free (txt);
}
*len_ret = len;
@@ -2209,7 +2210,7 @@ gtk_xtext_selection_get (GtkWidget * widget,
g_free (new_text);
}
free (stripped);
g_free (stripped);
}
static gboolean
@@ -2364,7 +2365,7 @@ xtext_do_chunk(chunk_t *c)
if (c->len1 == 0)
return;
meta = malloc (sizeof *meta);
meta = g_new (offlen_t, 1);
meta->off = c->off1;
meta->len = c->len1;
meta->emph = c->emph;
@@ -2387,7 +2388,7 @@ gtk_xtext_strip_color (unsigned char *text, int len, unsigned char *outbuf,
int mbl; /* multi-byte length */
if (outbuf == NULL)
new_str = malloc (len + 2);
new_str = g_malloc (len + 2);
else
new_str = outbuf;
@@ -2463,7 +2464,7 @@ bad_utf8: /* Normal ending sequence, and give up if bad utf8 */
if (slpp)
*slpp = c.slp;
else
g_slist_free_full (c.slp, free);
g_slist_free_full (c.slp, g_free);
return new_str;
}
@@ -2479,7 +2480,7 @@ gtk_xtext_text_width_ent (GtkXText *xtext, textentry *ent)
if (ent->slp)
{
g_slist_free_full (ent->slp, free);
g_slist_free_full (ent->slp, g_free);
ent->slp = NULL;
}
@@ -2511,7 +2512,7 @@ gtk_xtext_text_width (GtkXText *xtext, unsigned char *text, int len)
&new_len, &slp, !xtext->ignore_hidden);
width = backend_get_text_width_slp (xtext, new_buf, slp);
g_slist_free_full (slp, free);
g_slist_free_full (slp, g_free);
return width;
}
@@ -3534,7 +3535,7 @@ gtk_xtext_save (GtkXText * xtext, int fh)
&newlen, NULL, FALSE);
write (fh, buf, newlen);
write (fh, "\n", 1);
free (buf);
g_free (buf);
ent = ent->next;
}
}
@@ -3899,10 +3900,10 @@ gtk_xtext_kill_ent (xtext_buffer *buffer, textentry *ent)
gtk_xtext_search_textentry_del (buffer, ent);
}
g_slist_free_full (ent->slp, free);
g_slist_free_full (ent->slp, g_free);
g_slist_free (ent->sublines);
free (ent);
g_free (ent);
return visible;
}
@@ -4037,7 +4038,7 @@ gtk_xtext_clear (xtext_buffer *buf, int lines)
while (buf->text_first)
{
next = buf->text_first->next;
free (buf->text_first);
g_free (buf->text_first);
buf->text_first = next;
}
buf->text_last = NULL;
@@ -4214,7 +4215,7 @@ gtk_xtext_search_textentry (xtext_buffer *buf, textentry *ent)
}
/* Common processing --- */
g_slist_free_full (slp, free);
g_slist_free_full (slp, g_free);
return gl;
}
@@ -4643,7 +4644,7 @@ gtk_xtext_append_indent (xtext_buffer *buf,
if (right_text[right_len-1] == '\n')
right_len--;
ent = malloc (left_len + right_len + 2 + sizeof (textentry));
ent = g_malloc (left_len + right_len + 2 + sizeof (textentry));
str = (unsigned char *) ent + sizeof (textentry);
memcpy (str, left_text, left_len);
@@ -4698,7 +4699,7 @@ gtk_xtext_append (xtext_buffer *buf, unsigned char *text, int len, time_t stamp)
if (len >= sizeof (buf->xtext->scratch_buffer))
len = sizeof (buf->xtext->scratch_buffer) - 1;
ent = malloc (len + 1 + sizeof (textentry));
ent = g_malloc (len + 1 + sizeof (textentry));
ent->str = (unsigned char *) ent + sizeof (textentry);
ent->str_len = len;
if (len)
@@ -4963,8 +4964,7 @@ gtk_xtext_buffer_new (GtkXText *xtext)
{
xtext_buffer *buf;
buf = malloc (sizeof (xtext_buffer));
memset (buf, 0, sizeof (xtext_buffer));
buf = g_new0 (xtext_buffer, 1);
buf->old_value = -1;
buf->xtext = xtext;
buf->scrollbar_down = TRUE;
@@ -4994,9 +4994,9 @@ gtk_xtext_buffer_free (xtext_buffer *buf)
while (ent)
{
next = ent->next;
free (ent);
g_free (ent);
ent = next;
}
free (buf);
g_free (buf);
}