rendered paste bodyIndex: main/stdtime/localtime.c===================================================================--- main/stdtime/localtime.c (revision 199276)+++ main/stdtime/localtime.c (working copy)@@ -443,37 +443,39 @@ if (doextend && nread > 2 && u.buf[0] == '\n' && u.buf[nread - 1] == '\n' && sp->typecnt + 2 <= TZ_MAX_TYPES) {- struct state ts; int result;+ struct state *ts = ast_calloc(1, sizeof(*ts)); u.buf[nread - 1] = '\0';- result = tzparse(&u.buf[1], &ts, FALSE);- if (result == 0 && ts.typecnt == 2 &&- sp->charcnt + ts.charcnt <= TZ_MAX_CHARS) {+ result = tzparse(&u.buf[1], ts, FALSE);+ if (result == 0 && ts->typecnt == 2 &&+ sp->charcnt + ts->charcnt <= TZ_MAX_CHARS) { for (i = 0; i < 2; ++i)- ts.ttis[i].tt_abbrind +=+ ts->ttis[i].tt_abbrind += sp->charcnt;- for (i = 0; i < ts.charcnt; ++i)+ for (i = 0; i < ts->charcnt; ++i) sp->chars[sp->charcnt++] =- ts.chars[i];+ ts->chars[i]; i = 0;- while (i < ts.timecnt &&- ts.ats[i] <=+ while (i < ts->timecnt &&+ ts->ats[i] <= sp->ats[sp->timecnt - 1]) ++i;- while (i < ts.timecnt &&+ while (i < ts->timecnt && sp->timecnt < TZ_MAX_TIMES) { sp->ats[sp->timecnt] =- ts.ats[i];+ ts->ats[i]; sp->types[sp->timecnt] = sp->typecnt +- ts.types[i];+ ts->types[i]; ++sp->timecnt; ++i; }- sp->ttis[sp->typecnt++] = ts.ttis[0];- sp->ttis[sp->typecnt++] = ts.ttis[1];+ sp->ttis[sp->typecnt++] = ts->ttis[0];+ sp->ttis[sp->typecnt++] = ts->ttis[1]; }++ ast_free(ts); } i = 2 * YEARSPERREPEAT; sp->goback = sp->goahead = sp->timecnt > i;