Mercurial > libavformat.hg
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 */ |