[SOS] Une ânerie pour bien commencer
Brice Arnould
98111 at free.fr
Fri Jun 18 15:20:15 CEST 2004
Tout d'abord, bonjour et surtout merci à vous autres auteurs de cette série
d'articles qui s'annonce formidable ^_^.
Voilà, j'ai moi même essayé de farfouiller dans le code de SOS (j'ai vue que
klibc.c pour l'instant), et je crois que j'ai trouvée, au choix, une ou deux
optimisations (inutiles) ou une faute de compréhension du code de ma part.
J'aurais voulu être fixé à ce sujet... désolé de vous déranger pour ça.
-Dans strlen:
========
unsigned int strlen(register const char *str)
{
unsigned int retval = 0;
while (*str++)
retval++;
return retval;
--------
Pourquoi avoir réservé un seul octet au lieu de quatre pour retval ? ça risque
pas de faire en fait un strlen modulo 255 et des bugs pour les programmes
utilisateurs ?
Et puis je croyais que les standards disaient que l'incrémention
(contrairement aux autres assignations) pouvait être prioritaire sur le
pointage, ce qui serait dangereux en cas de changement d'humeur des devs de
GCC (mais ça m'étonne parce que dans ce cas la fonction n'aurait même pas
marché je pense)).
========
-Je crois que "dst[len-1] = '\0'; " est superflu dans strzcpy (ça risque même
de rajouter un problème si len == 0).
-Toujours dans strzcpy, pourquoi ne pas utiliser 32 bits pour stocker len ?
-Dans strzcat, est-ce que "char *res = dest;" ne risque pas de donner
"*res==dest" (pointage prioritaire sur l'assignation) alors que le but serait
"res==dest" ?
Enfin bon... j'arrête là parce que je pense que je dois vraiment vous casser
les ******* -_^. Si par miracle, certains des trucs que j'ai cru trouver sont
réellement des bugs mais que vous avez pas de temps à perdre, je me ferais
une joie de chercher les bugs à votre place (dans klibc que j'arrive à
comprendre et peut être ailleurs plus tard) et essayer de les corriger.
Merci encore pour votre excellent travail;
Brice
--
Doute du doute et tu croiras.
Enfin... je crois.
More information about the Sos
mailing list