Wangtang Clan

stuff from the wangtang clan! 
Filed under

coding

 

The Zune Bug

Here's the offending code for Zune bug that's been causing the mysterious hangs. Can you find it without looking at the solution?


//------------------------------------------------------------------------------
//
// Function: ConvertDays
//
// Local helper function that split total days since Jan 1, ORIGINYEAR into
// year, month and day
//
// Parameters:
//
// Returns:
//      Returns TRUE if successful, otherwise returns FALSE.
//
//------------------------------------------------------------------------------
BOOL ConvertDays(UINT32 days, SYSTEMTIME* lpTime)
{
    int dayofweek, month, year;
    UINT8 *month_tab;

    //Calculate current day of the week
    dayofweek = GetDayOfWeek(days);

    year = ORIGINYEAR;

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


    // Determine whether it is a leap year
    month_tab = (UINT8 *)((IsLeapYear(year))? monthtable_leap : monthtable);

    for (month=0; month< 12; month++)
    {
        if (days < = month_tab[month])
            break;
        days -= month_tab[month];
    }

    month += 1;

    lpTime- >wDay = days;
    lpTime- >wDayOfWeek = dayofweek;
    lpTime- >wMonth = month;
    lpTime- >wYear = year;

    return TRUE;
}

Loading mentions Retweet
Filed under  //   coding   screwed   Zune  

Comments [0]