diff options
author | Marti Maria <info@littlecms.com> | 2010-09-28 15:43:00 +0200 |
---|---|---|
committer | Marti Maria <info@littlecms.com> | 2010-09-28 15:43:00 +0200 |
commit | 80966a65a38ea9cb140b7fdba6bb3d32af0195db (patch) | |
tree | 32797e06e4cea3e8e5341318b8ed891bd1c1cf76 /src/cmslut.c | |
parent | 9e476cd747f18b6306abc1329050a564dc725b0d (diff) | |
download | lcms2-80966a65a38ea9cb140b7fdba6bb3d32af0195db.tar.gz |
Fixed memory leaks on error processing
Diffstat (limited to 'src/cmslut.c')
-rw-r--r-- | src/cmslut.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/cmslut.c b/src/cmslut.c index 289b0a3..6ee2663 100644 --- a/src/cmslut.c +++ b/src/cmslut.c @@ -252,6 +252,8 @@ cmsStage* CMSEXPORT cmsStageAllocToneCurves(cmsContext ContextID, cmsUInt32Numbe return NULL; } + NewMPE ->Data = (void*) NewElem; + NewElem ->nCurves = nChannels; NewElem ->TheCurves = (cmsToneCurve**) _cmsCalloc(ContextID, nChannels, sizeof(cmsToneCurve*)); if (NewElem ->TheCurves == NULL) { @@ -274,8 +276,6 @@ cmsStage* CMSEXPORT cmsStageAllocToneCurves(cmsContext ContextID, cmsUInt32Numbe } } - NewMPE ->Data = (void*) NewElem; - return NewMPE; } @@ -526,7 +526,12 @@ cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, if (NewMPE == NULL) return NULL; NewElem = (_cmsStageCLutData*) _cmsMalloc(ContextID, sizeof(_cmsStageCLutData)); - if (NewElem == NULL) return NULL; + if (NewElem == NULL) { + cmsStageFree(NewMPE); + return NULL; + } + + NewMPE ->Data = (void*) NewElem; NewElem -> nEntries = n = outputChan * CubeSize(clutPoints, inputChan); NewElem -> HasFloatValues = FALSE; @@ -549,8 +554,6 @@ cmsStage* CMSEXPORT cmsStageAllocCLut16bitGranular(cmsContext ContextID, return NULL; } - NewMPE ->Data = (void*) NewElem; - return NewMPE; } @@ -601,7 +604,12 @@ cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const c NewElem = (_cmsStageCLutData*) _cmsMalloc(ContextID, sizeof(_cmsStageCLutData)); - if (NewElem == NULL) return NULL; + if (NewElem == NULL) { + cmsStageFree(NewMPE); + return NULL; + } + + NewMPE ->Data = (void*) NewElem; NewElem -> nEntries = n = outputChan * CubeSize( clutPoints, inputChan); NewElem -> HasFloatValues = TRUE; @@ -618,7 +626,7 @@ cmsStage* CMSEXPORT cmsStageAllocCLutFloatGranular(cmsContext ContextID, const c } } - NewMPE ->Data = (void*) NewElem; + NewElem ->Params = _cmsComputeInterpParamsEx(ContextID, clutPoints, inputChan, outputChan, NewElem ->Tab.TFloat, CMS_LERP_FLAGS_FLOAT); if (NewElem ->Params == NULL) { |