summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarti Maria <marti.maria@littlecms.com>2013-03-29 09:32:40 -0700
committerMarti Maria <marti.maria@littlecms.com>2013-03-29 09:32:40 -0700
commit7233c7f12269e6ae5d6d0910be3ed8fd07c17d65 (patch)
tree62da1ba598ba6ca76c57b5dc33f6650d68ee2ed3
parentd2d902b9a03583ae482c782b2f243f7e5268a47d (diff)
parentf4ddc727b4b81c8d3ed47b88efa0cadecd380e7a (diff)
downloadlcms2-7233c7f12269e6ae5d6d0910be3ed8fd07c17d65.tar.gz
Merge pull request #13 from robinwatts/memsqueeze_fixes
Memsqueeze fixes
-rw-r--r--src/cmscnvrt.c7
-rw-r--r--src/cmsgamma.c3
-rw-r--r--src/cmsgmt.c8
-rw-r--r--src/cmslut.c14
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;