summaryrefslogtreecommitdiff
path: root/src/cmslut.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmslut.c')
-rw-r--r--src/cmslut.c28
1 files changed, 11 insertions, 17 deletions
diff --git a/src/cmslut.c b/src/cmslut.c
index ee6372a..e77f035 100644
--- a/src/cmslut.c
+++ b/src/cmslut.c
@@ -397,37 +397,31 @@ cmsStage* CMSEXPORT cmsStageAllocMatrix(cmsContext ContextID, cmsUInt32Number R
NewElem = (_cmsStageMatrixData*) _cmsMallocZero(ContextID, sizeof(_cmsStageMatrixData));
- if (NewElem == NULL) return NULL;
-
+ if (NewElem == NULL) goto Error;
+ NewMPE->Data = (void*)NewElem;
NewElem ->Double = (cmsFloat64Number*) _cmsCalloc(ContextID, n, sizeof(cmsFloat64Number));
-
- if (NewElem->Double == NULL) {
- MatrixElemTypeFree(NewMPE);
- return NULL;
- }
-
+ if (NewElem->Double == NULL) goto Error;
+
for (i=0; i < n; i++) {
NewElem ->Double[i] = Matrix[i];
}
-
if (Offset != NULL) {
NewElem ->Offset = (cmsFloat64Number*) _cmsCalloc(ContextID, Rows, sizeof(cmsFloat64Number));
- if (NewElem->Offset == NULL) {
- MatrixElemTypeFree(NewMPE);
- return NULL;
- }
-
+ if (NewElem->Offset == NULL) goto Error;
+
for (i=0; i < Rows; i++) {
NewElem ->Offset[i] = Offset[i];
}
-
}
-
- NewMPE ->Data = (void*) NewElem;
+
return NewMPE;
+
+Error:
+ cmsStageFree(NewMPE);
+ return NULL;
}