rendered paste bodyvoid mem_free(void* zone) { struct fb* nouveau; nouveau = (struct fb*) (((char *) zone) - sizeof(struct ab)); nouveau->taille = ((struct ab*) nouveau)->taille; if ((tete == NULL) || (((struct fb*) zone) < tete)) { nouveau->next = tete; //nouvelle tete tete = nouveau; if (nouveau->next != NULL) { //fusion if (nouveau->next == (struct fb*) (((char *) nouveau) + nouveau->taille)) { nouveau->taille = nouveau->taille + (nouveau->next)->taille; nouveau->next = (nouveau->next)->next; } } } else { struct fb *prev, *courant; courant = tete; prev = courant; while ((courant != NULL) && (courant < nouveau)) { prev = courant; courant = courant->next; } if (courant > nouveau) { prev->next = nouveau; nouveau->next = courant; if (nouveau->next != NULL) { //fusion if (nouveau->next == (struct fb*) (((char *) nouveau) + nouveau->taille)) { nouveau->taille = nouveau->taille + (nouveau->next)->taille; nouveau->next = (nouveau->next)->next; } } if (prev->next == (struct fb*) (((char *) prev) + prev->taille)) { prev->taille = prev->taille + (prev->next)->taille; prev->next = (prev->next)->next; } } }}