Segmentation fault sur échéancier

Parisot <[email protected]>
Newsgroups gmane.linux.grisbi.bugs
Message-ID <[email protected]>
J'utilise Grisbi 0.4.1
Voici l'erreur que je reçois lorsque je double-clique sur certaines 
opérations de l'échéancier.

Program received signal SIGSEGV, Segmentation fault.
0x080a33d9 in edition_echeance () at echeancier_liste.c:1170
1170          categorie =  g_slist_find_custom ( liste_struct_categories,


Voici le backtrace des appels au moment du plantage.

#0  0x080a33d9 in edition_echeance () at echeancier_liste.c:1170
#1  0x080a2da6 in click_ligne_echeance (liste=0x82488f0, 
evenement=0x81d8634,
    data=0x0) at echeancier_liste.c:980


Le problème se situe dans la fonction edition_echeance à la ligne 1170 
du fichier "echeancier_liste.c" . Voici l'extrait de code.

categorie =  g_slist_find_custom ( liste_struct_categories,
             GINT_TO_POINTER ( echeance_selectionnnee -> categorie ),
             (GCompareFunc) recherche_categorie_par_no ) ->data;


Il se trouve que, dans mon cas, la fonction g_slist_find_custom renvoit 
un pointeur nul, ce qui
fait que l'acces au membre "->data" plante puisque le pointeur est nul.
J'ai cherché à comprendre pourquoi la fonction renvoyait NULL.

En regardant dans le fichier de grisbi (xml), il se trouve que la 
catégorie associée est la numéro 15.
Cette catégorie n'existe plus dans la liste des catégories (toujours 
dans le fichier XML).
J'ai certainement demandé la suppression de cette catégorie et les 
échéances liées à cette catégorie n'ont pas été réinitialisée à 
"sans-catégorie".

Pour corriger mon problème, j'ai modifié le fichier XML pour que les 
échéances soient à nouveau liées à une catégorie et une sous catégorie.


Piste pour corriger le problème :
- faire des tests au chargement du fichier XML pour vérifier la 
cohérence du fichier chargé.
- vérifier si les échéances associées à une catégorie sont bien 
réinitialisées à "sans-catégorie" lorsque cette catégorie est supprimée.
- d'une facon générale, tester que le résultat renvoyé par une fonction 
n'est pas NULL.


J'espère vous avoir aidé.
Je n'ai pas utilisé le bug-tracker qui ne fonctionne pas en ce moment...

N'hésitez pas à me tenir au courant.

Cordialement

Dominique Parisot




-- 
Pour vous desabonner envoyez un mail a [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.