Je suis toujours sur mon IRC fait maison. J'ai cree uen fonction permettant de creer des onglets pour ajouter un nouveau channel ou message prive.
Quand je le fais en dur dans mon programme avec des onglets test, ca fonctionne parfaitement, mais quand je fais appelle a cette meme fonction lorsque je clique sur un bouton, alors un joli segmentation fault se produit

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
typedef struct  s_interface
{
  GtkWidget     *window;
  GtkWidget     *notebook;
  GtkWidget     *vbox1;
  GtkWidget     *label1;
  GSList        *channels;
}               t_interface;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
typedef struct  s_channel
{
  GtkWidget     *title;
  GtkWidget     *hbox1;
  GtkWidget     *hbox2;
  GtkWidget     *vbox2;
  GtkWidget     *vbox3;
  GtkWidget     *scrolledwindow;
  GtkWidget     *textview;
  GtkWidget     *entry;
  GtkWidget     *label1;
  GtkWidget     *label2;
  GtkWidget     *menu;
  GSList        *pseudos;
}               t_channel;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
void            on_click_pseudo(GtkWidget *widget, gpointer data)
{
  t_interface   *interface;
 
  interface = (t_interface *) data;
  add_channel(interface);
  printf("Ajout d'un message prive\n");
  widget = NULL;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void            add_channel(t_interface *interface)
{
  t_channel     *channel;
  gchar         *str;
  static gint   i = 0;
 
  channel = g_malloc(sizeof(t_channel));
  str = g_strdup_printf("#Channel %d", i + 1);
  channel->title = gtk_label_new(str);
  str = g_strdup_printf("Menu -> #Channel %d", i + 1);
  channel->menu = gtk_label_new(str);
  channel->hbox1 = gtk_hbox_new(FALSE, 0);
  create_pseudos_list(channel);
  gtk_box_pack_start(GTK_BOX(channel->hbox1), channel->vbox2, FALSE, TRUE, 0);
  create_display_zone(channel);
  gtk_box_pack_start(GTK_BOX(channel->hbox1), channel->vbox3, TRUE, TRUE, 0);
  gtk_notebook_append_page_menu(GTK_NOTEBOOK(interface->notebook), channel->hbox1, channel->title, channel->menu);
  interface->channels = g_slist_append(interface->channels, (gpointer) channel);
  g_free(str);
  i++;
}