diff options
Diffstat (limited to 'lcms2mt/src/cmsopt.c')
-rw-r--r-- | lcms2mt/src/cmsopt.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/lcms2mt/src/cmsopt.c b/lcms2mt/src/cmsopt.c index 7fb5e029..8fca60f8 100644 --- a/lcms2mt/src/cmsopt.c +++ b/lcms2mt/src/cmsopt.c @@ -379,7 +379,20 @@ Prelin16Data* PrelinOpt16alloc(cmsContext ContextID, p16 -> EvalCurveOut16 = (_cmsInterpFn16*) _cmsCalloc(ContextID, nOutputs, sizeof(_cmsInterpFn16)); + if (p16->EvalCurveOut16 == NULL) + { + _cmsFree(ContextID, p16); + return NULL; + } + p16 -> ParamsCurveOut16 = (cmsInterpParams**) _cmsCalloc(ContextID, nOutputs, sizeof(cmsInterpParams* )); + if (p16->ParamsCurveOut16 == NULL) + { + + _cmsFree(ContextID, p16->EvalCurveOut16); + _cmsFree(ContextID, p16); + return NULL; + } for (i=0; i < nOutputs; i++) { @@ -406,7 +419,10 @@ Prelin16Data* PrelinOpt16alloc(cmsContext ContextID, // Sampler implemented by another LUT. This is a clean way to precalculate the devicelink 3D CLUT for // almost any transform. We use floating point precision and then convert from floating point to 16 bits. static -cmsInt32Number XFormSampler16(cmsContext ContextID, CMSREGISTER const cmsUInt16Number In[], CMSREGISTER cmsUInt16Number Out[], CMSREGISTER void* Cargo) +cmsInt32Number XFormSampler16(cmsContext ContextID, + CMSREGISTER const cmsUInt16Number In[], + CMSREGISTER cmsUInt16Number Out[], + CMSREGISTER void* Cargo) { cmsPipeline* Lut = (cmsPipeline*) Cargo; cmsFloat32Number InFloat[cmsMAXCHANNELS], OutFloat[cmsMAXCHANNELS]; @@ -765,7 +781,7 @@ Error: if (DataSetIn == NULL && DataSetOut == NULL) { - _cmsPipelineSetOptimizationParameters(ContextID, Dest, (_cmsOPTeval16Fn) DataCLUT->Params->Interpolation.Lerp16, DataCLUT->Params, NULL, NULL); + _cmsPipelineSetOptimizationParameters(ContextID, Dest, (_cmsPipelineEval16Fn) DataCLUT->Params->Interpolation.Lerp16, DataCLUT->Params, NULL, NULL); } else { @@ -929,9 +945,9 @@ void PrelinEval8(cmsContext ContextID, g = (cmsUInt8Number) (Input[1] >> 8); b = (cmsUInt8Number) (Input[2] >> 8); - X0 = X1 = (cmsS15Fixed16Number) p8->X0[r]; - Y0 = Y1 = (cmsS15Fixed16Number) p8->Y0[g]; - Z0 = Z1 = (cmsS15Fixed16Number) p8->Z0[b]; + X0 = (cmsS15Fixed16Number) p8->X0[r]; + Y0 = (cmsS15Fixed16Number) p8->Y0[g]; + Z0 = (cmsS15Fixed16Number) p8->Z0[b]; rx = p8 ->rx[r]; ry = p8 ->ry[g]; @@ -1900,7 +1916,7 @@ cmsBool _cmsRegisterOptimizationPlugin(cmsContext ContextID, cmsPluginBase* Dat } // The entry point for LUT optimization -cmsBool _cmsOptimizePipeline(cmsContext ContextID, +cmsBool CMSEXPORT _cmsOptimizePipeline(cmsContext ContextID, cmsPipeline** PtrLut, cmsUInt32Number Intent, cmsUInt32Number* InputFormat, |