From 83032b1aa3c3e5910c5cfd3e0ea1d25827f56475 Mon Sep 17 00:00:00 2001 From: TingPing Date: Sun, 28 Dec 2014 06:37:25 -0500 Subject: 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 --- src/fe-gtk/banlist.c | 25 +++++-------- src/fe-gtk/chanlist.c | 4 +- src/fe-gtk/chanview.c | 19 +++++----- src/fe-gtk/custom-list.c | 4 +- src/fe-gtk/dccgui.c | 16 ++++---- src/fe-gtk/fe-gtk.c | 48 ++++++++++-------------- src/fe-gtk/fkeys.c | 26 ++++++------- src/fe-gtk/gtkutil.c | 4 +- src/fe-gtk/maingui.c | 86 ++++++++++++++++++------------------------- src/fe-gtk/menu.c | 42 ++++++++++----------- src/fe-gtk/palette.c | 50 +++++++++++-------------- src/fe-gtk/plugingui.c | 29 ++++++++------- src/fe-gtk/servlistgui.c | 22 +++++------ src/fe-gtk/setup.c | 5 +-- src/fe-gtk/sexy-spell-entry.c | 2 +- src/fe-gtk/textgui.c | 32 +++++++--------- src/fe-gtk/userlistgui.c | 16 ++++---- src/fe-gtk/xtext.c | 44 +++++++++++----------- 18 files changed, 213 insertions(+), 261 deletions(-) (limited to 'src/fe-gtk') diff --git a/src/fe-gtk/banlist.c b/src/fe-gtk/banlist.c index d6f44811..e10aaa67 100644 --- a/src/fe-gtk/banlist.c +++ b/src/fe-gtk/banlist.c @@ -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) diff --git a/src/fe-gtk/chanlist.c b/src/fe-gtk/chanlist.c index f3a2259d..1c10c161 100644 --- a/src/fe-gtk/chanlist.c +++ b/src/fe-gtk/chanlist.c @@ -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); diff --git a/src/fe-gtk/chanview.c b/src/fe-gtk/chanview.c index 4c50d922..e5556d9f 100644 --- a/src/fe-gtk/chanview.c +++ b/src/fe-gtk/chanview.c @@ -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; } diff --git a/src/fe-gtk/custom-list.c b/src/fe-gtk/custom-list.c index 485a9905..f1241947 100644 --- a/src/fe-gtk/custom-list.c +++ b/src/fe-gtk/custom-list.c @@ -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 diff --git a/src/fe-gtk/dccgui.c b/src/fe-gtk/dccgui.c index 9f5226bc..27365af4 100644 --- a/src/fe-gtk/dccgui.c +++ b/src/fe-gtk/dccgui.c @@ -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 diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c index e180d46b..64382d68 100644 --- a/src/fe-gtk/fe-gtk.c +++ b/src/fe-gtk/fe-gtk.c @@ -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); } } diff --git a/src/fe-gtk/fkeys.c b/src/fe-gtk/fkeys.c index 3c8745e7..66c98018 100644 --- a/src/fe-gtk/fkeys.c +++ b/src/fe-gtk/fkeys.c @@ -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; } diff --git a/src/fe-gtk/gtkutil.c b/src/fe-gtk/gtkutil.c index eabe9c75..e2ca1192 100644 --- a/src/fe-gtk/gtkutil.c +++ b/src/fe-gtk/gtkutil.c @@ -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; diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c index 5edd4ee8..54132681 100644 --- a/src/fe-gtk/maingui.c +++ b/src/fe-gtk/maingui.c @@ -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 ===== */ diff --git a/src/fe-gtk/menu.c b/src/fe-gtk/menu.c index 63607bed..0aa52636 100644 --- a/src/fe-gtk/menu.c +++ b/src/fe-gtk/menu.c @@ -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) diff --git a/src/fe-gtk/palette.c b/src/fe-gtk/palette.c index 435ba84b..0e933051 100644 --- a/src/fe-gtk/palette.c +++ b/src/fe-gtk/palette.c @@ -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); } } diff --git a/src/fe-gtk/plugingui.c b/src/fe-gtk/plugingui.c index 05d697f8..83e05727 100644 --- a/src/fe-gtk/plugingui.c +++ b/src/fe-gtk/plugingui.c @@ -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); } } diff --git a/src/fe-gtk/servlistgui.c b/src/fe-gtk/servlistgui.c index 6117899d..2202a6a6 100644 --- a/src/fe-gtk/servlistgui.c +++ b/src/fe-gtk/servlistgui.c @@ -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. */ diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c index a517fa82..4e24ca68 100644 --- a/src/fe-gtk/setup.c +++ b/src/fe-gtk/setup.c @@ -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); diff --git a/src/fe-gtk/sexy-spell-entry.c b/src/fe-gtk/sexy-spell-entry.c index 0dbca0bc..904746f4 100644 --- a/src/fe-gtk/sexy-spell-entry.c +++ b/src/fe-gtk/sexy-spell-entry.c @@ -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; diff --git a/src/fe-gtk/textgui.c b/src/fe-gtk/textgui.c index 556cca0c..b0f2f392 100644 --- a/src/fe-gtk/textgui.c +++ b/src/fe-gtk/textgui.c @@ -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); } } diff --git a/src/fe-gtk/userlistgui.c b/src/fe-gtk/userlistgui.c index 19564ece..e587026f 100644 --- a/src/fe-gtk/userlistgui.c +++ b/src/fe-gtk/userlistgui.c @@ -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 { diff --git a/src/fe-gtk/xtext.c b/src/fe-gtk/xtext.c index b2fadba0..57b98cc6 100644 --- a/src/fe-gtk/xtext.c +++ b/src/fe-gtk/xtext.c @@ -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); } -- cgit 1.4.1