Bonjour a tous, voila je suis en trin de réaliser un de mes projet qui était a l'état console, a l'état Fenêtre, pour cela j'utilise la bibliothèque Gtk, seulement voila, en général je trouve la cause des erreurs, mais la j'ai beau relire en boucle la partie du code qui pose problème je ne vois rien.

Il ne s'agit pas d'une erreur de Syntaxe, ni de compilation, l'erreur surgit lors de l'exécution, c'est a dire pendant le Débogage.

Voici l'erreur :

Exception non gérée à 0x003717d6 dans project3.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000053.

Et voici la fonction qui me pose problème :


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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
void
on_button2_clicked (GtkButton * button, gpointer data)
{
	FILE* cheminwow = NULL;
	GtkWidget *pFileSelection;
        GtkWidget *pDialog;
	GtkWidget *msgError;
	GtkWidget *pParent;
        gchar* chemin;
 
 
	pParent = GTK_WIDGET(data);
 
 
 
 
 
    /* Creation de la fenetre de selection */
        pFileSelection = gtk_file_chooser_dialog_new("Ouvrir...",
	GTK_WINDOW(pParent),
	GTK_FILE_CHOOSER_ACTION_OPEN,
	GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
	GTK_STOCK_OPEN, GTK_RESPONSE_OK,
	NULL);
    /* On limite les actions a cette fenetre */
        gtk_window_set_modal(GTK_WINDOW(pFileSelection), TRUE);
 
    /* Affichage fenetre */
        switch(gtk_dialog_run(GTK_DIALOG(pFileSelection)))
        {
            case GTK_RESPONSE_OK:
            /* Recuperation du chemin */
            chemin = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(pFileSelection));
            pDialog = gtk_message_dialog_new(GTK_WINDOW(pFileSelection),
                GTK_DIALOG_MODAL,
                GTK_MESSAGE_INFO,
                GTK_BUTTONS_OK,
                "Chemin du fichier :\n%s", chemin);
			gtk_dialog_run(GTK_DIALOG(pDialog));
			gtk_widget_destroy(pDialog);
 
 
 
 
				cheminwow = fopen("cheminwow.txt", "w+");
 
				if(cheminwow != NULL)
					{
						fputs(chemin, cheminwow);
						fclose(cheminwow);
 
					}
				else
					{
						msgError =  gtk_message_dialog_new (NULL,
							   GTK_DIALOG_MODAL,
							   GTK_MESSAGE_ERROR,
							   GTK_BUTTONS_OK,
							   "Impossible de creer un fichier Cheminwow.txt contenant l'adresse du realmlist !");
						gtk_window_set_title (GTK_DIALOG (msgError), _("Erreur !"));
						gtk_dialog_run(GTK_DIALOG(msgError));
						gtk_widget_destroy(msgError);	
					}
 
 
						break;
					default:
 
						break;
    }
 
	g_free(chemin);
	gtk_widget_destroy(pFileSelection);
 
}
Mon programme me créer bien un Fichier "cheminwow.txt" avec l'adresse choisi par l'utilisateur dans la boite de dialogue de sélection, pourtant après l'erreur se lance.
En Activant le mode console qui permet de voir des erreur envoyer par Gtk, j'obtiens ceci lorsque j'exécute cette fonction :



Edit 1: Je viens de me rendre compte que si je clique sur Open, Comme sur Annulé ( Donc le cas Default ), le message d'erreur survient, je n'y comprend vraiment plus rien, merci pour la futur âme qui me viendras en aide !

Edit 2: Je me suis apercu que si l'utilisateur ne validais pas je faisais quand meme g_free(); sur un pointeur non-initialisé donc j'ai corrigé en le métant dans le case OK, pourtant la meme erreur de deboger survient.


Merci pour vos réponses.