Properly decompress erroneous CMYK/YCCK images whose K component has an ID of 1 instead of 4 (this is to support SumatraPDF)
This commit is contained in:
@@ -24,6 +24,11 @@ because libjpeg-turbo's distributed version of jconfig.h contained an INLINE
|
|||||||
macro, which conflicted with a similar macro in DevIL. This macro is used only
|
macro, which conflicted with a similar macro in DevIL. This macro is used only
|
||||||
internally when building libjpeg-turbo, so it was moved into config.h.
|
internally when building libjpeg-turbo, so it was moved into config.h.
|
||||||
|
|
||||||
|
[6] libjpeg-turbo will now correctly decompress erroneous CMYK/YCCK JPEGs whose
|
||||||
|
K component is assigned a component ID of 1 instead of 4. Although these files
|
||||||
|
are in violation of the spec, other JPEG implementations handle them
|
||||||
|
correctly.
|
||||||
|
|
||||||
|
|
||||||
1.1.90 (1.2 beta1)
|
1.1.90 (1.2 beta1)
|
||||||
==================
|
==================
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
* jdmarker.c
|
* jdmarker.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 1991-1998, Thomas G. Lane.
|
* Copyright (C) 1991-1998, Thomas G. Lane.
|
||||||
|
* Copyright (C) 2012, D. R. Commander.
|
||||||
* This file is part of the Independent JPEG Group's software.
|
* This file is part of the Independent JPEG Group's software.
|
||||||
* For conditions of distribution and use, see the accompanying README file.
|
* For conditions of distribution and use, see the accompanying README file.
|
||||||
*
|
*
|
||||||
@@ -322,13 +323,16 @@ get_sos (j_decompress_ptr cinfo)
|
|||||||
|
|
||||||
/* Collect the component-spec parameters */
|
/* Collect the component-spec parameters */
|
||||||
|
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
cinfo->cur_comp_info[i] = NULL;
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
INPUT_BYTE(cinfo, cc, return FALSE);
|
INPUT_BYTE(cinfo, cc, return FALSE);
|
||||||
INPUT_BYTE(cinfo, c, return FALSE);
|
INPUT_BYTE(cinfo, c, return FALSE);
|
||||||
|
|
||||||
for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
|
for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components;
|
||||||
ci++, compptr++) {
|
ci++, compptr++) {
|
||||||
if (cc == compptr->component_id)
|
if (cc == compptr->component_id && !cinfo->cur_comp_info[ci])
|
||||||
goto id_found;
|
goto id_found;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user