bonjour, voila j'ai un problème avec une de mes fonctions
j'ai un programme composé d'une fenêtre avec une liste, lorsque l'on clique sur une des lignes de la liste, une nouvelle fenêtre s'ouvre.
voila le problème c'est que si l'on ouvre et ferme la nouvelle fenêtre trois fois de suite, le programme plante

code de ma fonction
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
static void
AffichageConversation(gchar *sPath, gint iPath){
  GtkWidget *pWindow;
  GtkWidget *pVBox;
  GtkWidget *pTextView;
  GtkWidget *pScrolled;
  GtkWidget *pLabel;
  GtkTextBuffer *pText;
  gint r;
 
  pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_default_size(GTK_WINDOW(pWindow), 480, 480);
  gtk_window_set_title(GTK_WINDOW(pWindow), "Conversation");
  g_signal_connect(G_OBJECT(pWindow), "delete-event", G_CALLBACK(quit), NULL);
 
  if((r = open(sPath, O_RDONLY)) == -1){
    pLabel=gtk_label_new("Erreur lors de l'ouverture de la converation");
    gtk_container_add(GTK_CONTAINER(pWindow), pLabel);
    gtk_widget_show_all(pWindow);
    return;
  }
 
  pVBox = gtk_vbox_new(FALSE, 5);
  gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
 
  //Creation de la barre d'outils
  static GtkWidget *pToolbar = NULL;
  pToolbar = gtk_toolbar_new();
  gtk_box_pack_start(GTK_BOX(pVBox), pToolbar, FALSE, FALSE, 0);
  //Creation a partir de stock
  gtk_toolbar_insert_stock(GTK_TOOLBAR(pToolbar), GTK_STOCK_SAVE, "Enregistrer", NULL, NULL, NULL, -1);
  gtk_toolbar_insert_stock(GTK_TOOLBAR(pToolbar), GTK_STOCK_QUIT, "Fermer", NULL, G_CALLBACK(quit), NULL, -1);
  gtk_toolbar_append_space(GTK_TOOLBAR(pToolbar));
  gtk_toolbar_insert_stock(GTK_TOOLBAR(pToolbar), GTK_STOCK_GO_BACK, "Precedent", NULL, NULL, NULL, -1);
  gtk_toolbar_insert_stock(GTK_TOOLBAR(pToolbar), GTK_STOCK_GO_FORWARD, "Suivant", NULL, NULL, NULL, -1);
  //Insertion d'un espace
  gtk_toolbar_append_space(GTK_TOOLBAR(pToolbar));
  //Modification de la taille des icones
  gtk_toolbar_set_icon_size(GTK_TOOLBAR(pToolbar), GTK_ICON_SIZE_BUTTON);
  //Affichage uniquement des icones
  gtk_toolbar_set_style(GTK_TOOLBAR(pToolbar), GTK_TOOLBAR_ICONS);
 
  pScrolled = gtk_scrolled_window_new(NULL, NULL);
  gtk_box_pack_start(GTK_BOX(pVBox), pScrolled, TRUE, TRUE, 5);
  pTextView = gtk_text_view_new();
  gtk_text_view_set_editable(GTK_TEXT_VIEW(pTextView), FALSE);
  gtk_container_add(GTK_CONTAINER(pScrolled), pTextView); //BUGGGGGGGGGGGGGGGGGGGGG
  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  pText = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pTextView));
  //création de tags pour afficher le texte en gras ou couleur
  gtk_text_buffer_create_tag(pText, "message", "weight", PANGO_WEIGHT_BOLD, "foreground", "blue", NULL);
  gtk_text_buffer_create_tag(pText, "arrive", "weight", PANGO_WEIGHT_BOLD, "foreground", "red", NULL);
 
  gtk_widget_show_all(pWindow);
  return;
}
merci de votre aide