Svelato il Bug di Zune

E’ stata chiarita l’origine del bug che il 31 dicembre ha messo ko il lettore multimediale Zune. Ebbene, dall’analisi del codice che ho trovato su questo blog il problema è da imputarsi ad un loop infinito!

Questo è il frammento di codice incriminato:

    while (days > 365)
    {
        if (IsLeapYear(year))
        {
            if (days > 366)
            {
                days -= 366;
                year += 1;
            }
        }
        else
        {
            days -= 365;
            year += 1;
        }
    }

alla riga 5 ( if (day > 366)  ) si può vedere il bug: la variabile days non potrà mai essere maggiore di 366 (al massimo uguale). Quindi la variabile stessa non verrà mai decrementata e il ciclo while non potrà mai essere interrotto. Ed è esattamente quello che è successo alla mezzanotte del 31.

Gli utenti di Zune 30Gb possono stare tranquilli… fino al prossimo anno bisestile.

1 Trackback / Pingback

  1. Noi siamo Microsoft, mica un gruppo di programmatori cantinari at b0sh.net

I commenti sono bloccati.