comparison cutils.c @ 3306:4d73d137f64e libavformat

Do not loop endlessly if converting into dv with timestamps Jan 1st not immediately following a lapyear. Patch by babupillai. Fixes issue 443.
author cehoyos
date Wed, 21 May 2008 07:05:08 +0000
parents bda0941921fe
children ecc817a37849
comparison
equal deleted inserted replaced
3305:129d36178a10 3306:4d73d137f64e
75 tm->tm_min = (secs % 3600) / 60; 75 tm->tm_min = (secs % 3600) / 60;
76 tm->tm_sec = secs % 60; 76 tm->tm_sec = secs % 60;
77 77
78 /* oh well, may be someone some day will invent a formula for this stuff */ 78 /* oh well, may be someone some day will invent a formula for this stuff */
79 y = 1970; /* start "guessing" */ 79 y = 1970; /* start "guessing" */
80 while (days >= (ISLEAP(y)?366:365)) { 80 while (days > 365) {
81 ny = (y + days/366); 81 ny = (y + days/366);
82 days -= (ny - y) * 365 + LEAPS_COUNT(ny - 1) - LEAPS_COUNT(y - 1); 82 days -= (ny - y) * 365 + LEAPS_COUNT(ny - 1) - LEAPS_COUNT(y - 1);
83 y = ny; 83 y = ny;
84 } 84 }
85 if (days==365 && !ISLEAP(y)) { days=0; y++; }
85 md[1] = ISLEAP(y)?29:28; 86 md[1] = ISLEAP(y)?29:28;
86 for (m=0; days >= md[m]; m++) 87 for (m=0; days >= md[m]; m++)
87 days -= md[m]; 88 days -= md[m];
88 89
89 tm->tm_year = y; /* unlike gmtime_r we store complete year here */ 90 tm->tm_year = y; /* unlike gmtime_r we store complete year here */