editeng/qa/unit/core-test.cxx | 3 +++ vcl/source/filter/jpeg/JpegReader.cxx | 13 +++---------- vcl/source/filter/jpeg/jpeg.h | 11 +++++++++++ vcl/source/filter/jpeg/jpegc.cxx | 3 ++- 4 files changed, 19 insertions(+), 11 deletions(-)
New commits: commit d7685eb3f417e19a5e61f2fe550eb03d6848365d Author: Caolán McNamara <[email protected]> Date: Fri Mar 10 14:53:47 2017 +0000 ensure SfxApplication exists for editeng test Change-Id: I73814e38437f83f8aa7b87addc285e82f7357bea diff --git a/editeng/qa/unit/core-test.cxx b/editeng/qa/unit/core-test.cxx index 23defaa..dea52f3 100644 --- a/editeng/qa/unit/core-test.cxx +++ b/editeng/qa/unit/core-test.cxx @@ -12,6 +12,7 @@ #include <cppunit/TestFixture.h> #include <cppunit/extensions/HelperMacros.h> +#include "sfx2/app.hxx" #include "svl/itempool.hxx" #include "editeng/eerdll.hxx" #include "editeng/eerdll2.hxx" @@ -80,6 +81,8 @@ void Test::setUp() test::BootstrapFixture::setUp(); mpItemPool = new EditEngineItemPool(true); + + SfxApplication::GetOrCreate(); } void Test::tearDown() commit f596e5d461b6436cdb6ee9efa59807d99bb54135 Author: Caolán McNamara <[email protected]> Date: Fri Mar 10 14:04:59 2017 +0000 ofz#799 stop decompressing if the file is truncated Change-Id: I4040ebbf7b21905b950f4af36012bc83aebaa320 diff --git a/vcl/source/filter/jpeg/JpegReader.cxx b/vcl/source/filter/jpeg/JpegReader.cxx index cde54c4..7cd9a22 100644 --- a/vcl/source/filter/jpeg/JpegReader.cxx +++ b/vcl/source/filter/jpeg/JpegReader.cxx @@ -33,15 +33,6 @@ #define JPEG_MIN_READ 512 #define BUFFER_SIZE 4096 -/* Expanded data source object for stdio input */ - -struct SourceManagerStruct { - jpeg_source_mgr pub; /* public fields */ - SvStream* stream; /* source stream */ - JOCTET* buffer; /* start of buffer */ - boolean start_of_file; /* have we gotten any data yet? */ -}; - /* * Initialize source --- called by jpeg_read_header * before any data is actually read. @@ -55,6 +46,7 @@ extern "C" void init_source (j_decompress_ptr cinfo) * This is correct behavior for reading a series of images from one source. */ source->start_of_file = TRUE; + source->no_data_available = FALSE; } long StreamRead( SvStream* pStream, void* pBuffer, long nBufferSize ) @@ -89,6 +81,7 @@ extern "C" boolean fill_input_buffer (j_decompress_ptr cinfo) if (!nbytes) { + source->no_data_available = TRUE; if (source->start_of_file) /* Treat empty input file as fatal error */ { ERREXIT(cinfo, JERR_INPUT_EMPTY); @@ -158,7 +151,7 @@ void jpeg_svstream_src (j_decompress_ptr cinfo, void* input) (*cinfo->mem->alloc_small) (reinterpret_cast<j_common_ptr>(cinfo), JPOOL_PERMANENT, BUFFER_SIZE * sizeof(JOCTET))); } - source = reinterpret_cast<SourceManagerStruct *>(cinfo->src); + source = reinterpret_cast<SourceManagerStruct*>(cinfo->src); source->pub.init_source = init_source; source->pub.fill_input_buffer = fill_input_buffer; source->pub.skip_input_data = skip_input_data; diff --git a/vcl/source/filter/jpeg/jpeg.h b/vcl/source/filter/jpeg/jpeg.h index 08caa47..1927663 100644 --- a/vcl/source/filter/jpeg/jpeg.h +++ b/vcl/source/filter/jpeg/jpeg.h @@ -34,6 +34,7 @@ namespace com { namespace sun { namespace star { namespace task { class JPEGReader; class JPEGWriter; class Size; +class SvStream; void jpeg_svstream_src (j_decompress_ptr cinfo, void* infile); @@ -49,6 +50,16 @@ void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines, long Transform( void* pInputStream, void* pOutputStream, long nAngle ); +/* Expanded data source object for stdio input */ + +struct SourceManagerStruct { + jpeg_source_mgr pub; /* public fields */ + SvStream* stream; /* source stream */ + JOCTET* buffer; /* start of buffer */ + boolean start_of_file; /* have we gotten any data yet? */ + boolean no_data_available; +}; + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/filter/jpeg/jpegc.cxx b/vcl/source/filter/jpeg/jpegc.cxx index 8fc0ed8..a5f1edb 100644 --- a/vcl/source/filter/jpeg/jpegc.cxx +++ b/vcl/source/filter/jpeg/jpegc.cxx @@ -84,6 +84,7 @@ void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines, jpeg_create_decompress( &cinfo ); jpeg_svstream_src( &cinfo, pInputStream ); + SourceManagerStruct *source = reinterpret_cast<SourceManagerStruct*>(cinfo.src); jpeg_read_header( &cinfo, TRUE ); cinfo.scale_num = 1; @@ -190,7 +191,7 @@ void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines, } } - for (*pLines = 0; *pLines < nHeight; (*pLines)++) + for (*pLines = 0; *pLines < nHeight && !source->no_data_available; (*pLines)++) { size_t yIndex = *pLines;
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
