if (i >= 64)
if (i >= 64){ fprintf(stderr, "run too long at %d %d\n", s->mb_x, s->mb_y);
static int mpeg2_decode_block_intra(MpegEncContext *s,                                     DCTELEM *block,                                     int n){    int level, dc, diff, i, j, run;    int code, component;    RLTable *rl;    const UINT8 *scan_table;    const UINT16 *matrix;    int mismatch;    if (s->alternate_scan)        scan_table = ff_alternate_vertical_scan;    else        scan_table = zigzag_direct;    /* DC coef */    component = (n <= 3 ? 0 : n - 4 + 1);    diff = decode_dc(s, component);    if (diff >= 0xffff)        return -1;    dc = s->last_dc[component];    dc += diff;    s->last_dc[component] = dc;    block[0] = dc << (3 - s->intra_dc_precision);    dprintf("dc=%d\n", block[0]);    mismatch = block[0] ^ 1;    i = 1;    if (s->intra_vlc_format)        rl = &rl_mpeg2;    else        rl = &rl_mpeg1;    if (n < 4)         matrix = s->intra_matrix;    else        matrix = s->chroma_intra_matrix;    /* now quantify & encode AC coefs */    for(;;) {        code = get_vlc2(&s->gb, rl->vlc.table, TEX_VLC_BITS, 2);        if (code < 0)            return -1;        if (code == 112) {            break;        } else if (code == 111) {            /* escape */            run = get_bits(&s->gb, 6);            level = get_bits(&s->gb, 12);            level = (level << 20) >> 20;        } else {            run = rl->table_run[code];            level = rl->table_level[code];            if (get_bits1(&s->gb))                level = -level;        }        i += run;        if (i >= 64)            return -1;	j = scan_table[i];        dprintf("%d: run=%d level=%d\n", n, run, level);        level = (level * s->qscale * matrix[j]) / 16;        /* XXX: is it really necessary to saturate since the encoder           knows whats going on ? */        mismatch ^= level;        block[j] = level;        i++;    }    block[63] ^= (mismatch & 1);    s->block_last_index[n] = i;    return 0;}