Probably it will be better use IJG memory manager. For example code in module JPEGImageDecoder.cpp, member function WebCore::JPEGImageReader::decode() :
/* * Make a one-row-high sample array that will go away * when done with image. Always make it big enough to * hold an RGB row. Since this uses the IJG memory * manager, it must be allocated before the call to * jpeg_start_compress(). */ int row_stride = m_info.output_width * 4; // RGBA buffer m_samples = (*m_info.mem->alloc_sarray)((j_common_ptr) &m_info, JPOOL_IMAGE, row_stride, 1); I think comment "it must be allocated before the call to jpeg_start_compress()" is invalid (I am not sure). Lei Zhang wrote: > It probably needs to be converted into a scoped_array like in > JPEGCodec::Decode. Can you file a bug for this on http://crbug.com/ ? > > On Thu, Jul 2, 2009 at 5:59 AM, runtime<run_t...@tut.by> wrote: > > > > Hi > > There is memory leak in the module jpeg_codec.cc, member function > > > > bool JPEGCodec::Encode(const unsigned char* input, ColorFormat format, > > int w, int h, int row_byte_width, > > int quality, std::vector<unsigned char>* > > output); > > > > code > > > > // output row after converting > > unsigned char* row = new unsigned char[w * 3]; > > > > while (cinfo.next_scanline < cinfo.image_height) { > > converter(&input[cinfo.next_scanline * row_byte_width], w, row); > > jpeg_write_scanlines(&cinfo, &row, 1); > > } > > delete[] row; > > > > The allocated in row pointer memory will not be released if error > > happens in libjpeg. > > > > > > > --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---