diff options
Diffstat (limited to 'src/cmslut.c')
-rw-r--r-- | src/cmslut.c | 28 |
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; } |