diff --git a/src/spaceListRem.c b/src/spaceListRem.c index 5577c29..805eef6 100644 --- a/src/spaceListRem.c +++ b/src/spaceListRem.c @@ -14,7 +14,6 @@ int msgSpaceListRem(msgSpaceId spaceId){ msgSpaceListElem * prevElem; msgSpaceListElem * currElem; - msgSpaceListElem * nextElem; msgSpaceId currSpaceId; list=msgSpaceListOpen(); @@ -51,7 +50,7 @@ int msgSpaceListRem(msgSpaceId spaceId){ } if (strcmp(prevElemId,nextElemId)==0){ // list à 1 seul élement - if (strcmp(currElem->spaceId,spaceId)==0){ + if (strcmp(currSpaceId,spaceId)==0){ // on a trouvé l'elem strcpy(list->headId,list->id); strcpy(list->tailId,list->id); @@ -63,18 +62,31 @@ int msgSpaceListRem(msgSpaceId spaceId){ } } else { // liste à plusieurs élements... - if (strcmp(currElem->spaceId,spaceId)==0){ + if (strcmp(currSpaceId,spaceId)==0){ // ca correspond - // si on est en début de liste (prev=current) - // - la tete de liste pointe sur le suivant - // - on détruit l'actuel - // si on est en find de liste (current=next) - // - on fait pointer le précédent sur luimeme - // - on fait pointer la queue de liste sur le précédent - // - on détruit l'actuel - // sinon : - // - on fait pointer le précédent sur le suivant + if (strcmp(prevElemId,currElemId)==0){ + // si on est en début de liste (prev=current) + // - la tete de liste pointe sur le suivant + strcpy(list->headId,nextElemId); + } else { + if (strcmp(currElemId,nextElemId)==0){ + // si on est en find de liste (current=next) + // - on fait pointer la queue de liste sur le précédent + strcpy(list->tailId,prevElemId); + // - on fait pointer le précédent sur lui-meme + prevElem=msgSpaceListElemOpen(prevElemId); + strcpy(prevElem->next,prevElemId); + msgSpaceListElemClose(prevElem); + }else { + // on est en milieu de liste + // - on fait pointer le précédent sur le suivant + prevElem=msgSpaceListElemOpen(prevElemId); + strcpy(prevElem->next,nextElemId); + msgSpaceListElemClose(prevElem); + } + } // - on détruit l'actuel + shm_unlink(currElemId); found=true; break; } else {