Leçons de la journée (enfin, plutôt de la nuit) :
une simple accolade au mauvais endroit suffit à vous rendre fou
Suite à un refactoring (manuel),
{
uint8_t *p;
{
uint8_t tableau[42];
p = tableau;
(...)
}
fonction(p);
}
au lieu de {
uint8_t *p;
{
uint8_t tableau[42];
p = tableau;
(...)
fonction(p);
}
}
Et la plupart du temps, ça fonctionne quand même normalement vu que c'est alloué sur la pile... mais pas tout le temps.
si votre compilateur dit qu'il manque un prototype de fonction mais que ça compile quand même, méfiez-vous
J'ajoute Sleep(42) quelque part pour tester si un truc est sensible au timing, j'ai la flemme de rajouter #include <windows.h>, ça compile quand même avec juste un warning, et ça donne l'impression de fonctionner... sauf que la convention d'appel n'est pas la bonne, du coup ça fait des bugs "rigolos" (dans mon cas, ça faisait foirer aléatoirement la boucle qui contenait l'appel de la fonction)