/* The decompressor output side looks only at the saved quant tables, not at the current Q-table slots.  */
latch_quant_tables(j_decompress_ptr cinfo)
/* The decompressor output side looks only at the saved quant tables, not at the current Q-table slots.  */
latch_quant_tables(j_decompress_ptr cinfo)
{
    int ci, qtblno;
    jpeg_component_info* compptr;
    JQUANT_TBL* qtbl;
    for (ci = 0; ci < cinfo->comps_in_scan; ci++) {
        compptr = cinfo->cur_comp_info[ci];
        if (compptr->quant_table != NULL)
            continue;
        qtblno = compptr->quant_tbl_no;
        if (qtblno < 0 || qtblno >= NUM_QUANT_TBLS ||
            cinfo->quant_tbl_ptrs[qtblno] == NULL)
            ERREXIT1(cinfo, JERR_NO_QUANT_TABLE, qtblno);
        qtbl = (JQUANT_TBL*)
            (*cinfo->mem->alloc_small) ((j_common_ptr)cinfo, JPOOL_IMAGE,
                SIZEOF(JQUANT_TBL));
        MEMCOPY(qtbl, cinfo->quant_tbl_ptrs[qtblno], SIZEOF(JQUANT_TBL));
        compptr->quant_table = qtbl;
    }
}