Le langage C, que nous utilisons pour tous nos produits depuis la fin des années 80 est né il y a 50 ans. En C, certaines opérations un peu étranges sont marquées sur la documentation comme ayant un résultat non garanti. Mais là-dedans il y a des choses évidentes, qui en théorie seraient susceptibles d'après la doc de ne pas réagir comme attendu, mais fonctionnent correctement depuis le début. C'est le cas, par exemple, lorsqu'on copie une chaîne de caractères ou une zone mémoire sur elle-même. Cette opération n'a pas d'effet, et c'est ce qu'on attend. Aucune raison que ça ne fonctionne pas. Jusqu'à ce qu'un ingénieur de chez Apple se dise : ahah ! mais d'après la doc, cela pourrait ne PAS marcher, donc faisons en sorte que si quelqu'un le fait, ça crashe l'application. Il pouvait l'éviter par un simple petit test. Des programmeurs se sont plaints, mais non. Il était dans son droit, donc il l'a laissé comme ça. Résultat : du code bien solide, resté inchangé depuis 20, 30 ans, qui se recompilait sans souci à chaque nouvelle version du système et qui fonctionnait, se met brusquement à planter. On a donc passé la journée à sécuriser nos vieilles portions de code, pour éviter ce crash introduit volontairement. Des centaines de fichiers source (à la louche, plus de 600) à modifier et vérifier. C'est ce qu'on appelle du travail utile... Bon week-end ! |