diff options
author | Marti Maria <marti.maria@littlecms.com> | 2013-03-29 09:32:40 -0700 |
---|---|---|
committer | Marti Maria <marti.maria@littlecms.com> | 2013-03-29 09:32:40 -0700 |
commit | 7233c7f12269e6ae5d6d0910be3ed8fd07c17d65 (patch) | |
tree | 62da1ba598ba6ca76c57b5dc33f6650d68ee2ed3 | |
parent | d2d902b9a03583ae482c782b2f243f7e5268a47d (diff) | |
parent | f4ddc727b4b81c8d3ed47b88efa0cadecd380e7a (diff) | |
download | lcms2-7233c7f12269e6ae5d6d0910be3ed8fd07c17d65.tar.gz |
Merge pull request #13 from robinwatts/memsqueeze_fixes
Memsqueeze fixes
-rw-r--r-- | src/cmscnvrt.c | 7 | ||||
-rw-r--r-- | src/cmsgamma.c | 3 | ||||
-rw-r--r-- | src/cmsgmt.c | 8 | ||||
-rw-r--r-- | src/cmslut.c | 14 |
4 files changed, 22 insertions, 10 deletions
diff --git a/src/cmscnvrt.c b/src/cmscnvrt.c index 30c86d6..07baf72 100644 --- a/src/cmscnvrt.c +++ b/src/cmscnvrt.c @@ -468,7 +468,8 @@ cmsPipeline* DefaultICCintents(cmsContext ContextID, cmsFloat64Number AdaptationStates[], cmsUInt32Number dwFlags) { - cmsPipeline* Lut, *Result; + cmsPipeline* Lut = NULL; + cmsPipeline* Result; cmsHPROFILE hProfile; cmsMAT3 m; cmsVEC3 off; @@ -564,7 +565,8 @@ cmsPipeline* DefaultICCintents(cmsContext ContextID, } // Concatenate to the output LUT - cmsPipelineCat(Result, Lut); + if (!cmsPipelineCat(Result, Lut)) + goto Error; cmsPipelineFree(Lut); // Update current space @@ -575,6 +577,7 @@ cmsPipeline* DefaultICCintents(cmsContext ContextID, Error: + cmsPipelineFree(Lut); if (Result != NULL) cmsPipelineFree(Result); return NULL; diff --git a/src/cmsgamma.c b/src/cmsgamma.c index 7471d25..10ca600 100644 --- a/src/cmsgamma.c +++ b/src/cmsgamma.c @@ -229,7 +229,8 @@ cmsToneCurve* AllocateToneCurveStruct(cmsContext ContextID, cmsInt32Number nEntr } p ->InterpParams = _cmsComputeInterpParams(ContextID, p ->nEntries, 1, 1, p->Table16, CMS_LERP_FLAGS_16BITS); - return p; + if (p->InterpParams != NULL) + return p; Error: if (p -> Segments) _cmsFree(ContextID, p ->Segments); diff --git a/src/cmsgmt.c b/src/cmsgmt.c index 70e8db0..56e6921 100644 --- a/src/cmsgmt.c +++ b/src/cmsgmt.c @@ -389,9 +389,11 @@ cmsPipeline* _cmsCreateGamutCheckPipeline(cmsContext ContextID, if (Gamut != NULL) {
CLUT = cmsStageAllocCLut16bit(ContextID, nGridpoints, nChannels, 1, NULL);
- cmsPipelineInsertStage(Gamut, cmsAT_BEGIN, CLUT);
-
- cmsStageSampleCLut16bit(CLUT, GamutSampler, (void*) &Chain, 0);
+ if (!cmsPipelineInsertStage(Gamut, cmsAT_BEGIN, CLUT)) {
+ cmsPipelineFree(Gamut);
+ Gamut = NULL;
+ } else
+ cmsStageSampleCLut16bit(CLUT, GamutSampler, (void*) &Chain, 0);
}
}
else
diff --git a/src/cmslut.c b/src/cmslut.c index 2d8e7eb..9750f31 100644 --- a/src/cmslut.c +++ b/src/cmslut.c @@ -235,10 +235,10 @@ Error: if (NewElem ->TheCurves != NULL) { for (i=0; i < NewElem ->nCurves; i++) { if (NewElem ->TheCurves[i]) - cmsFreeToneCurve(Data ->TheCurves[i]); + cmsFreeToneCurve(NewElem ->TheCurves[i]); } } - _cmsFree(mpe ->ContextID, Data ->TheCurves); + _cmsFree(mpe ->ContextID, NewElem ->TheCurves); _cmsFree(mpe ->ContextID, NewElem); return NULL; } @@ -363,6 +363,8 @@ static void MatrixElemTypeFree(cmsStage* mpe) { _cmsStageMatrixData* Data = (_cmsStageMatrixData*) mpe ->Data; + if (Data == NULL) + return; if (Data ->Double) _cmsFree(mpe ->ContextID, Data ->Double); @@ -1220,9 +1222,13 @@ cmsStage* CMSEXPORT cmsStageDup(cmsStage* mpe) NewMPE ->Implements = mpe ->Implements; - if (mpe ->DupElemPtr) + if (mpe ->DupElemPtr) { NewMPE ->Data = mpe ->DupElemPtr(mpe); - else + if (NewMPE->Data == NULL) { + cmsStageFree(NewMPE); + return NULL; + } + } else NewMPE ->Data = NULL; return NewMPE; |