|
@@ -2698,14 +2698,14 @@ static int la_InitProofLUT(void** lut, cmsHPROFILE cmyk_profile, cmsHPROFILE rgb
|
|
cmsDoTransform(htransform,data,table,LA_LUT_PIXCOUNT);
|
|
cmsDoTransform(htransform,data,table,LA_LUT_PIXCOUNT);
|
|
}
|
|
}
|
|
int laLoadProofingICC(char* path){
|
|
int laLoadProofingICC(char* path){
|
|
- cmsHPROFILE cmyk = cmsOpenProfileFromFile(path,"r");
|
|
|
|
|
|
+ cmsHPROFILE cmyk = cmsOpenProfileFromFile(path, "r"); if (!cmyk) return 0;
|
|
cmsHPROFILE srgb = cmsCreate_sRGBProfile();
|
|
cmsHPROFILE srgb = cmsCreate_sRGBProfile();
|
|
cmsHPROFILE clay = la_CreateProfileClay();
|
|
cmsHPROFILE clay = la_CreateProfileClay();
|
|
cmsHPROFILE d65p3 = la_CreateProfileD65P3();
|
|
cmsHPROFILE d65p3 = la_CreateProfileD65P3();
|
|
- char* lut1,*lut2,*lut3;
|
|
|
|
- la_InitProofLUT(&lut1,cmyk,srgb); if(!lut1){ return 0; }
|
|
|
|
- la_InitProofLUT(&lut2,cmyk,srgb); if(!lut2){ free(lut1); return 0; }
|
|
|
|
- la_InitProofLUT(&lut3,cmyk,srgb); if(!lut3){ free(lut1);free(lut2); return 0; }
|
|
|
|
|
|
+ char* lut1,*lut2,*lut3; int res=0;
|
|
|
|
+ la_InitProofLUT(&lut1,cmyk,srgb); if(!lut1){ goto cleanup; }
|
|
|
|
+ la_InitProofLUT(&lut2,cmyk,srgb); if(!lut2){ goto cleanup; }
|
|
|
|
+ la_InitProofLUT(&lut3,cmyk,srgb); if(!lut3){ goto cleanup; }
|
|
|
|
|
|
laProofingLUT *pl=memAcquire(sizeof(laProofingLUT));
|
|
laProofingLUT *pl=memAcquire(sizeof(laProofingLUT));
|
|
char* name=strGetLastSegment(path,LA_PATH_SEP);
|
|
char* name=strGetLastSegment(path,LA_PATH_SEP);
|
|
@@ -2714,7 +2714,11 @@ int laLoadProofingICC(char* path){
|
|
|
|
|
|
lstAppendItem(&MAIN.ProofingLUTs,pl);
|
|
lstAppendItem(&MAIN.ProofingLUTs,pl);
|
|
laSetProofingLut(pl);
|
|
laSetProofingLut(pl);
|
|
- return 1;
|
|
|
|
|
|
+ res=1;
|
|
|
|
+cleanup:
|
|
|
|
+ if(lut1) free(lut1); if(lut2) free(lut2); if(lut3) free(lut3);
|
|
|
|
+ cmsCloseProfile(srgb); cmsCloseProfile(clay); cmsCloseProfile(d65p3);
|
|
|
|
+ return res;
|
|
}
|
|
}
|
|
static void la_RemoveProofingProfile(laProofingLUT* pl){
|
|
static void la_RemoveProofingProfile(laProofingLUT* pl){
|
|
laProofingLUT* npl=pl->Item.pNext?pl->Item.pNext:pl->Item.pPrev;
|
|
laProofingLUT* npl=pl->Item.pNext?pl->Item.pNext:pl->Item.pPrev;
|