rem: result = g_slist_find_custom ( LISTE_OPERATIONS, GINT_TO_POINTER ( operation -> relation_no_operation ), (GCompareFunc) recherche_operation_par_no );
add: if ( operation -> relation_no_compte >= 0 ) { p_tab_nom_de_compte_variable = p_tab_nom_de_compte + operation -> relation_no_compte;
context: void supprime_operations_orphelines ( void ){  gint i;  gint nb_vir;  gint nb_ventil;  nb_vir = 0;  nb_ventil = 0;  for ( i = 0 ; i < nb_comptes ; i++ )    {      GSList *liste_tmp;      p_tab_nom_de_compte_variable = p_tab_nom_de_compte + i;      liste_tmp = LISTE_OPERATIONS;      while ( liste_tmp )	{	  struct structure_operation *operation;	  GSList *result;	  operation = liste_tmp -> data;	  /* si c'est un virement, recherche la contre opration */	  if ( operation -> relation_no_operation )	    {	      p_tab_nom_de_compte_variable = p_tab_nom_de_compte + operation -> relation_no_compte;	      result = g_slist_find_custom ( LISTE_OPERATIONS,					     GINT_TO_POINTER ( operation -> relation_no_operation ),					     (GCompareFunc) recherche_operation_par_no );	      /* si la contre opration n'est pas trouve, on met les relations de cette op  0 */	      if ( !result )		{		  nb_vir++;		  operation -> relation_no_operation = 0;		  operation -> relation_no_compte = 0;		}	      p_tab_nom_de_compte_variable = p_tab_nom_de_compte + i;	    }	  /* si c'est une op de ventil, recherche la ventil associe */	  if ( operation -> no_operation_ventilee_associee )	    {	      result = g_slist_find_custom ( LISTE_OPERATIONS,					     GINT_TO_POINTER ( operation -> no_operation_ventilee_associee ),					     (GCompareFunc) recherche_operation_par_no );	      /*  si on a trouv une op, vrifie que c'est une ventil */	      /* sinon, supprime l'op de ventil */	      if ( result )		{		  struct structure_operation *ope_ventil;		  ope_ventil = result -> data;		  if ( ope_ventil -> operation_ventilee )		    liste_tmp = liste_tmp -> next;		  else		    {		      /* supprime l'opration dans la liste des ops */		      liste_tmp = liste_tmp -> next;		      LISTE_OPERATIONS = g_slist_remove ( LISTE_OPERATIONS,							  operation );		      NB_OPE_COMPTE--;		      nb_ventil++;		    }		}	      else		{		  /* supprime l'opration dans la liste des ops */		  liste_tmp = liste_tmp -> next;		  LISTE_OPERATIONS = g_slist_remove ( LISTE_OPERATIONS,						      operation );		  NB_OPE_COMPTE--;		  nb_ventil++;		}	    }	  else	    liste_tmp = liste_tmp -> next;	}    }  if ( nb_ventil       ||       nb_vir )    {      gchar *message;      message = "Un bug dans les versions infrieures  la 0.4.0 pouvait faire apparatre des oprations orphelines :\n-soit des virements sans contre-opration,\n-soit des oprations de dtails de ventilation sans ventilation mre associe.\n\nGrisbi a recherch ces types d'oprations et a trouv :\n\n";      if ( nb_ventil )	message = g_strconcat ( message,				itoa ( nb_ventil ),				" oprations de ventilations orphelines qui ont t simplement supprimes.\n",				NULL );      if ( nb_vir )	message = g_strconcat ( message,				itoa ( nb_vir ),				" virements sans contre-opration, dont les catgories ont t annules.\n",				NULL );	message = g_strconcat ( message,				"\nCes modifications ne devraient pas affecter le fonctionnement de Grisbi ni les soldes de vos comptes.",				NULL );      dialogue ( message );    }  etat.en_train_de_charger = 0;}