summaryrefslogtreecommitdiff
path: root/src/cmslut.c
diff options
context:
space:
mode:
authorMarti Maria <info@littlecms.com>2010-09-28 15:43:00 +0200
committerMarti Maria <info@littlecms.com>2010-09-28 15:43:00 +0200
commit80966a65a38ea9cb140b7fdba6bb3d32af0195db (patch)
tree32797e06e4cea3e8e5341318b8ed891bd1c1cf76 /src/cmslut.c
parent9e476cd747f18b6306abc1329050a564dc725b0d (diff)
downloadlcms2-80966a65a38ea9cb140b7fdba6bb3d32af0195db.tar.gz
Fixed memory leaks on error processing
Diffstat (limited to 'src/cmslut.c')
-rw-r--r--src/cmslut.c22
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) {