mars
2007
En l’espace de deux semaines, j’ai eu deux mésaventures avec Reflector :
la première, une exception quand je voulais voir le code d’une propriété pourtant relativement simple. (Je n’ai pas réussi à le reproduire dans un autre exemple) => message automatique envoyé à Denis Bauer.
la deuxième, aujourd’hui même. Je récupère l’integralité du namespace RegularExpression et là surprise, la classe Regex ne fonctionne pas correctement. Ca m’a obligé à bien me plonger dedans pour comprendre l’erreur. Le code généré par reflector dans le case ‘{‘ du label ‘Label_02D9:’ de la méthode ScanRegex() de la classe RegexParser fait ceci :
max = min = this.ScanDecimal();
alors qu’il faudrait faire :
max = this.ScanDecimal();
Il faut aussi rajouter à la condition qui suit un else :
max = min;
et surtout, il y a une erreur dans le code de ScanDecimal. reflector nous affiche la condition de boucle suivante :
while ((this.CharsRight() > 0) && ((num2 = this.RightChar() - '0') <= 9))
alors qu’il faudrait while ((this.CharsRight() > 0) && ((num2 = this.RightChar() - '0') <= 9) && (num2 > 0)
Une fois ces modifications effectuées, ma classe Regex refonctionne normalement.
Ma question par contre est : Comment cela est-il possible ? La dll du framework est bonne puisqu’elle fonctionne correctement. Pourquoi le code de cette dll désasemblée avec la dll est faux ? Si quelqu’un a une explication, ça m’intéresse de savoir !