virtual ~SkJPEGImageIndex() {
     jpeg_destroy_huffman_index(index);
     delete cinfo->src;
     jpeg_finish_decompress(cinfo);
     jpeg_destroy_decompress(cinfo);
     free(cinfo);
 }
 ~SkJPEGImageIndex() {
     if (fHuffmanCreated) {
         // Set to false before calling the libjpeg function, in case
         // the libjpeg function calls longjmp. Our setjmp handler may
         // attempt to delete this SkJPEGImageIndex, thus entering this
         // destructor again. Setting fHuffmanCreated to false first
         // prevents an infinite loop.
         fHuffmanCreated = false;
         jpeg_destroy_huffman_index(&fHuffmanIndex);
     }
     if (fDecompressStarted) {
         // Like fHuffmanCreated, set to false before calling libjpeg
         // function to prevent potential infinite loop.
         fDecompressStarted = false;
         jpeg_finish_decompress(&fCInfo);
     }
     if (fInfoInitialized) {
         this->destroyInfo();
     }
 }