rem: dest_categ -> liste_sous_categ = g_slist_append ( dest_categ -> liste_sous_categ, sub_categ );
context: gboolean categ_drag_data_received ( GtkTreeDragDest * drag_dest, GtkTreePath * dest_path,				    GtkSelectionData * selection_data ){    if ( dest_path && selection_data )    {	GtkTreeModel * model;	GtkTreePath * orig_path;	GtkTreeIter iter, iter_parent;	gint no_dest_categ, no_dest_sub_categ, no_orig_categ, no_orig_sub_categ, account;	gpointer pointer;	enum meta_tree_row_type orig_type;	struct structure_operation * transaction = NULL;	struct struct_sous_categ * sub_categ;	struct struct_categ * orig_categ, * dest_categ;	gtk_tree_get_row_drag_data (selection_data, &model, &orig_path);	metatree_get_row_properties ( model, orig_path,				      NULL, &no_orig_categ, &no_orig_sub_categ, &pointer );	orig_type = metatree_get_row_type ( model, orig_path );	metatree_get_row_properties ( model, dest_path,				      NULL, &no_dest_categ, &no_dest_sub_categ, NULL );		switch ( orig_type )	{	    case META_TREE_TRANSACTION:		transaction = (struct structure_operation *) pointer;		if ( transaction )		{		    move_transaction_to_sub_category ( transaction, model, 						       orig_path, dest_path,						       no_dest_categ, no_dest_sub_categ );		}		break;	    case META_TREE_SUB_DIV:		sub_categ = sous_categ_par_no ( no_orig_categ, no_orig_sub_categ );		dest_categ = categ_par_no ( no_dest_categ );		dest_categ -> liste_sous_categ = g_slist_append ( dest_categ -> liste_sous_categ,								  sub_categ );		orig_categ = categ_par_no ( no_orig_categ );		orig_categ -> liste_sous_categ = g_slist_remove ( orig_categ -> liste_sous_categ,								  sub_categ );		no_dest_sub_categ = no_orig_sub_categ;		/* Populate tree */		gtk_tree_model_get_iter ( model, &iter_parent, dest_path );		gtk_tree_store_append ( GTK_TREE_STORE(model), &iter, &iter_parent);		fill_sub_categ_row ( &iter, categ_par_no(no_dest_categ), 				     sous_categ_par_no(no_dest_categ, no_orig_sub_categ) );		for ( account = 0; account < nb_comptes; account ++ )		{		    GSList *pointeur_ope;		    p_tab_nom_de_compte_variable = p_tab_nom_de_compte + 			GPOINTER_TO_INT ( account );	    		    pointeur_ope = LISTE_OPERATIONS;	    		    while ( pointeur_ope )		    {			transaction = pointeur_ope -> data;					if ( transaction &&			     transaction -> categorie == no_orig_categ &&			     transaction -> sous_categorie == no_orig_sub_categ &&			     !transaction -> relation_no_operation &&			     !transaction -> operation_ventilee )			{			    GtkTreePath * path;			    path = gtk_tree_model_get_path ( model, &iter );			    move_transaction_to_sub_category ( transaction, model, 							       orig_path, path,							       no_dest_categ, 							       no_dest_sub_categ );			}			pointeur_ope = pointeur_ope -> next;		    }		}		break;	    default:		break;	}    }        return FALSE;}