| Index: jdapimin.c
 | 
| diff --git a/jdapimin.c b/jdapimin.c
 | 
| index cadb59fce3aa1cc239e86c592774cc500e109613..f80a14667fc8ea7c4bbeebe18ba09980482dc882 100644
 | 
| --- a/jdapimin.c
 | 
| +++ b/jdapimin.c
 | 
| @@ -1,9 +1,12 @@
 | 
|  /*
 | 
|   * jdapimin.c
 | 
|   *
 | 
| + * This file was part of the Independent JPEG Group's software:
 | 
|   * Copyright (C) 1994-1998, Thomas G. Lane.
 | 
| - * This file is part of the Independent JPEG Group's software.
 | 
| - * For conditions of distribution and use, see the accompanying README file.
 | 
| + * libjpeg-turbo Modifications:
 | 
| + * Copyright (C) 2016, D. R. Commander.
 | 
| + * For conditions of distribution and use, see the accompanying README.ijg
 | 
| + * file.
 | 
|   *
 | 
|   * This file contains application interface code for the decompression half
 | 
|   * of the JPEG library.  These are the "minimum" API routines that may be
 | 
| @@ -19,6 +22,7 @@
 | 
|  #define JPEG_INTERNALS
 | 
|  #include "jinclude.h"
 | 
|  #include "jpeglib.h"
 | 
| +#include "jdmaster.h"
 | 
|  
 | 
|  
 | 
|  /*
 | 
| @@ -32,12 +36,12 @@ jpeg_CreateDecompress (j_decompress_ptr cinfo, int version, size_t structsize)
 | 
|    int i;
 | 
|  
 | 
|    /* Guard against version mismatches between library and caller. */
 | 
| -  cinfo->mem = NULL;		/* so jpeg_destroy knows mem mgr not called */
 | 
| +  cinfo->mem = NULL;            /* so jpeg_destroy knows mem mgr not called */
 | 
|    if (version != JPEG_LIB_VERSION)
 | 
|      ERREXIT2(cinfo, JERR_BAD_LIB_VERSION, JPEG_LIB_VERSION, version);
 | 
| -  if (structsize != SIZEOF(struct jpeg_decompress_struct))
 | 
| -    ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE, 
 | 
| -	     (int) SIZEOF(struct jpeg_decompress_struct), (int) structsize);
 | 
| +  if (structsize != sizeof(struct jpeg_decompress_struct))
 | 
| +    ERREXIT2(cinfo, JERR_BAD_STRUCT_SIZE,
 | 
| +             (int) sizeof(struct jpeg_decompress_struct), (int) structsize);
 | 
|  
 | 
|    /* For debugging purposes, we zero the whole master structure.
 | 
|     * But the application has already set the err pointer, and may have set
 | 
| @@ -48,7 +52,7 @@ jpeg_CreateDecompress (j_decompress_ptr cinfo, int version, size_t structsize)
 | 
|    {
 | 
|      struct jpeg_error_mgr * err = cinfo->err;
 | 
|      void * client_data = cinfo->client_data; /* ignore Purify complaint here */
 | 
| -    MEMZERO(cinfo, SIZEOF(struct jpeg_decompress_struct));
 | 
| +    MEMZERO(cinfo, sizeof(struct jpeg_decompress_struct));
 | 
|      cinfo->err = err;
 | 
|      cinfo->client_data = client_data;
 | 
|    }
 | 
| @@ -80,6 +84,14 @@ jpeg_CreateDecompress (j_decompress_ptr cinfo, int version, size_t structsize)
 | 
|  
 | 
|    /* OK, I'm ready */
 | 
|    cinfo->global_state = DSTATE_START;
 | 
| +
 | 
| +  /* The master struct is used to store extension parameters, so we allocate it
 | 
| +   * here.
 | 
| +   */
 | 
| +  cinfo->master = (struct jpeg_decomp_master *)
 | 
| +      (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,
 | 
| +                                  sizeof(my_decomp_master));
 | 
| +  MEMZERO(cinfo->master, sizeof(my_decomp_master));
 | 
|  }
 | 
|  
 | 
|  
 | 
| @@ -121,22 +133,22 @@ default_decompress_parms (j_decompress_ptr cinfo)
 | 
|      cinfo->jpeg_color_space = JCS_GRAYSCALE;
 | 
|      cinfo->out_color_space = JCS_GRAYSCALE;
 | 
|      break;
 | 
| -    
 | 
| +
 | 
|    case 3:
 | 
|      if (cinfo->saw_JFIF_marker) {
 | 
|        cinfo->jpeg_color_space = JCS_YCbCr; /* JFIF implies YCbCr */
 | 
|      } else if (cinfo->saw_Adobe_marker) {
 | 
|        switch (cinfo->Adobe_transform) {
 | 
|        case 0:
 | 
| -	cinfo->jpeg_color_space = JCS_RGB;
 | 
| -	break;
 | 
| +        cinfo->jpeg_color_space = JCS_RGB;
 | 
| +        break;
 | 
|        case 1:
 | 
| -	cinfo->jpeg_color_space = JCS_YCbCr;
 | 
| -	break;
 | 
| +        cinfo->jpeg_color_space = JCS_YCbCr;
 | 
| +        break;
 | 
|        default:
 | 
| -	WARNMS1(cinfo, JWRN_ADOBE_XFORM, cinfo->Adobe_transform);
 | 
| -	cinfo->jpeg_color_space = JCS_YCbCr; /* assume it's YCbCr */
 | 
| -	break;
 | 
| +        WARNMS1(cinfo, JWRN_ADOBE_XFORM, cinfo->Adobe_transform);
 | 
| +        cinfo->jpeg_color_space = JCS_YCbCr; /* assume it's YCbCr */
 | 
| +        break;
 | 
|        }
 | 
|      } else {
 | 
|        /* Saw no special markers, try to guess from the component IDs */
 | 
| @@ -145,31 +157,31 @@ default_decompress_parms (j_decompress_ptr cinfo)
 | 
|        int cid2 = cinfo->comp_info[2].component_id;
 | 
|  
 | 
|        if (cid0 == 1 && cid1 == 2 && cid2 == 3)
 | 
| -	cinfo->jpeg_color_space = JCS_YCbCr; /* assume JFIF w/out marker */
 | 
| +        cinfo->jpeg_color_space = JCS_YCbCr; /* assume JFIF w/out marker */
 | 
|        else if (cid0 == 82 && cid1 == 71 && cid2 == 66)
 | 
| -	cinfo->jpeg_color_space = JCS_RGB; /* ASCII 'R', 'G', 'B' */
 | 
| +        cinfo->jpeg_color_space = JCS_RGB; /* ASCII 'R', 'G', 'B' */
 | 
|        else {
 | 
| -	TRACEMS3(cinfo, 1, JTRC_UNKNOWN_IDS, cid0, cid1, cid2);
 | 
| -	cinfo->jpeg_color_space = JCS_YCbCr; /* assume it's YCbCr */
 | 
| +        TRACEMS3(cinfo, 1, JTRC_UNKNOWN_IDS, cid0, cid1, cid2);
 | 
| +        cinfo->jpeg_color_space = JCS_YCbCr; /* assume it's YCbCr */
 | 
|        }
 | 
|      }
 | 
|      /* Always guess RGB is proper output colorspace. */
 | 
|      cinfo->out_color_space = JCS_RGB;
 | 
|      break;
 | 
| -    
 | 
| +
 | 
|    case 4:
 | 
|      if (cinfo->saw_Adobe_marker) {
 | 
|        switch (cinfo->Adobe_transform) {
 | 
|        case 0:
 | 
| -	cinfo->jpeg_color_space = JCS_CMYK;
 | 
| -	break;
 | 
| +        cinfo->jpeg_color_space = JCS_CMYK;
 | 
| +        break;
 | 
|        case 2:
 | 
| -	cinfo->jpeg_color_space = JCS_YCCK;
 | 
| -	break;
 | 
| +        cinfo->jpeg_color_space = JCS_YCCK;
 | 
| +        break;
 | 
|        default:
 | 
| -	WARNMS1(cinfo, JWRN_ADOBE_XFORM, cinfo->Adobe_transform);
 | 
| -	cinfo->jpeg_color_space = JCS_YCCK; /* assume it's YCCK */
 | 
| -	break;
 | 
| +        WARNMS1(cinfo, JWRN_ADOBE_XFORM, cinfo->Adobe_transform);
 | 
| +        cinfo->jpeg_color_space = JCS_YCCK; /* assume it's YCCK */
 | 
| +        break;
 | 
|        }
 | 
|      } else {
 | 
|        /* No special markers, assume straight CMYK. */
 | 
| @@ -177,7 +189,7 @@ default_decompress_parms (j_decompress_ptr cinfo)
 | 
|      }
 | 
|      cinfo->out_color_space = JCS_CMYK;
 | 
|      break;
 | 
| -    
 | 
| +
 | 
|    default:
 | 
|      cinfo->jpeg_color_space = JCS_UNKNOWN;
 | 
|      cinfo->out_color_space = JCS_UNKNOWN;
 | 
| @@ -185,7 +197,7 @@ default_decompress_parms (j_decompress_ptr cinfo)
 | 
|    }
 | 
|  
 | 
|    /* Set defaults for other decompression parameters. */
 | 
| -  cinfo->scale_num = 1;		/* 1:1 scaling */
 | 
| +  cinfo->scale_num = 1;         /* 1:1 scaling */
 | 
|    cinfo->scale_denom = 1;
 | 
|    cinfo->output_gamma = 1.0;
 | 
|    cinfo->buffered_image = FALSE;
 | 
| @@ -253,7 +265,7 @@ jpeg_read_header (j_decompress_ptr cinfo, boolean require_image)
 | 
|      retcode = JPEG_HEADER_OK;
 | 
|      break;
 | 
|    case JPEG_REACHED_EOI:
 | 
| -    if (require_image)		/* Complain if application wanted an image */
 | 
| +    if (require_image)          /* Complain if application wanted an image */
 | 
|        ERREXIT(cinfo, JERR_NO_IMAGE);
 | 
|      /* Reset to start state; it would be safer to require the application to
 | 
|       * call jpeg_abort, but we can't change it now for compatibility reasons.
 | 
| @@ -385,7 +397,7 @@ jpeg_finish_decompress (j_decompress_ptr cinfo)
 | 
|    /* Read until EOI */
 | 
|    while (! cinfo->inputctl->eoi_reached) {
 | 
|      if ((*cinfo->inputctl->consume_input) (cinfo) == JPEG_SUSPENDED)
 | 
| -      return FALSE;		/* Suspend, come back later */
 | 
| +      return FALSE;             /* Suspend, come back later */
 | 
|    }
 | 
|    /* Do final cleanup */
 | 
|    (*cinfo->src->term_source) (cinfo);
 | 
| 
 |