alelievr / libft-unit-test

457 stars 88 forks source link

Bug with ft_strrchr #21

Closed cnovo-ri closed 7 years ago

cnovo-ri commented 7 years ago

Le test ne valide pas la fonction environ une fois sur deux en me précisant "[crash]: your strrchr crash cause it read too many bytes or attempt to write on s !", mais pourtant quand je relance quelques fois ca passe. Cette fonction passes tout les autres tests (42 FC, Maintest, Libftest, Moulitest).

voici le code concerné :

include "libft.h"

char ft_strrchr(const char s, int c) { size_t i; char *str;

 str = (char *)s;
 i = ft_strlen(s);
 if ((char)c == '\0')
      return (&str[i]);
 while (str[i] >= 0)
  {
       if (str[i] == (char)c)
           return (&str[i]);
        i--;
    }
     return (0);

}

real-felix commented 7 years ago

Ce code est faux, c'est tout. Demande de l'aide sur le forum ou sur slack, mais ici ce n'est normalement pas pour demander de l'aide sur les implémentations, c'est un bug-tracking. Un indice : la condition dans ton while.

alelievr commented 7 years ago

Salut, @Boiethio a raison c'est bien ton code qui est faux, cependant le faite que l'erreur soit random sur mon test est plus gênant. j'ai chercher un peu et j'ai trouver l'erreur: le test sur la memoire électrique ne gère pour le cas ou la memoire est parcourue en partant de la fin jusqu'au debut. J'ai corrigé ca dans la dernière version du test, normalement maintenant ta fonction va crash à 100 %.