|  | @@ -99,7 +99,7 @@ boolean div_node(subdiv* sd, node* n) {
 | 
	
		
			
				|  |  |      newn->prev = n->index;
 | 
	
		
			
				|  |  |      newn->next = n->next;
 | 
	
		
			
				|  |  |      //Modifie node suivant la nouvelle
 | 
	
		
			
				|  |  | -    if (n->next != -1) {
 | 
	
		
			
				|  |  | +    if (n->next != -1 || n->next == n->index) {
 | 
	
		
			
				|  |  |          sd->mem[n->next].prev = newn->index;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      //Modifie node origine
 | 
	
	
		
			
				|  | @@ -125,7 +125,7 @@ boolean fusion_node(subdiv* sd, node* n) {
 | 
	
		
			
				|  |  |      n->end = n2->end;
 | 
	
		
			
				|  |  |      n->length *= 2;
 | 
	
		
			
				|  |  |      n->next = n2->next;
 | 
	
		
			
				|  |  | -    if (n2->next != -1) {
 | 
	
		
			
				|  |  | +    if (n2->next != -1 || n2->next == n2->index) {
 | 
	
		
			
				|  |  |          sd->mem[n2->next].prev = n->index;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      //Indique que l'autre node n'est plus utilisée
 | 
	
	
		
			
				|  | @@ -137,6 +137,7 @@ boolean fusion_node(subdiv* sd, node* n) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void ini_subdiv(subdiv* sd) {
 | 
	
		
			
				|  |  |      sd->mem[0] = (node){0, 0, MEM_SIZE, MEM_SIZE, MEMEMPTY, -1, -1};
 | 
	
		
			
				|  |  | +    printf("%d\n", sd->mem[0].next);
 | 
	
		
			
				|  |  |      sd->use[0] = true;
 | 
	
		
			
				|  |  |      for (int i = 1; i < MEM_SIZE / 2; i++) {
 | 
	
		
			
				|  |  |          sd->use[i] = false;
 | 
	
	
		
			
				|  | @@ -153,7 +154,7 @@ boolean add_data_subdiv(subdiv* sd, char* mem, char* key, char* data) {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //Charge le prochain noeud
 | 
	
		
			
				|  |  | -        if(n->next == -1){
 | 
	
		
			
				|  |  | +        if(n->next == -1 || n->next == n->index){
 | 
	
		
			
				|  |  |              n = NULL;
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              n = &sd->mem[n->next];
 | 
	
	
		
			
				|  | @@ -197,7 +198,7 @@ boolean add_fdata_subdiv(subdiv* sd, char* mem, char* data) {
 | 
	
		
			
				|  |  |              break;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //Charge le prochain noeud
 | 
	
		
			
				|  |  | -        if(n->next == -1){
 | 
	
		
			
				|  |  | +        if(n->next == -1 || n->next == n->index){
 | 
	
		
			
				|  |  |              n = NULL;
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              n = &sd->mem[n->next];
 | 
	
	
		
			
				|  | @@ -253,7 +254,7 @@ boolean remove_data_subdiv(subdiv* sd, char* mem, char* key) {
 | 
	
		
			
				|  |  |                  n = &sd->mem[0];
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  |                  //Charge le prochain noeud
 | 
	
		
			
				|  |  | -                if(n->next == -1){
 | 
	
		
			
				|  |  | +                if(n->next == -1 || n->next == n->index){
 | 
	
		
			
				|  |  |                      n = NULL;
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      n = &sd->mem[n->next];
 | 
	
	
		
			
				|  | @@ -264,7 +265,7 @@ boolean remove_data_subdiv(subdiv* sd, char* mem, char* key) {
 | 
	
		
			
				|  |  |                  n = &sd->mem[0];
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  |                  //Charge le prochain noeud
 | 
	
		
			
				|  |  | -                if(n->next == -1){
 | 
	
		
			
				|  |  | +                if(n->next == -1 || n->next == n->index){
 | 
	
		
			
				|  |  |                      n = NULL;
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      n = &sd->mem[n->next];
 | 
	
	
		
			
				|  | @@ -272,7 +273,7 @@ boolean remove_data_subdiv(subdiv* sd, char* mem, char* key) {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              //Charge le prochain noeud
 | 
	
		
			
				|  |  | -            if(n->next == -1){
 | 
	
		
			
				|  |  | +            if(n->next == -1 || n->next == n->index){
 | 
	
		
			
				|  |  |                  n = NULL;
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  |                  n = &sd->mem[n->next];
 | 
	
	
		
			
				|  | @@ -309,7 +310,7 @@ void show_data_subdiv(subdiv* sd, char* mem){
 | 
	
		
			
				|  |  |              free(str);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          //Charge le prochain noeud
 | 
	
		
			
				|  |  | -        if(n->next == -1){
 | 
	
		
			
				|  |  | +        if(n->next == -1 || n->next == n->index){
 | 
	
		
			
				|  |  |              n = NULL;
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              n = &sd->mem[n->next];
 |