Thread: [Lcms-user] Troubles with cmsIT8SaveToMem
An ICC-based CMM for color management
Brought to you by:
mm2
From: Richard H. <hug...@gm...> - 2012-05-08 10:28:44
|
Hey all, I'm trying to use cmsIT8SaveToMem to save a ti3 profile. I'm doing something like this: /* write the file */ ret = cmsIT8SaveToMem (it8, NULL, (cmsUInt32Number *) &size); g_assert (ret); data = g_malloc (size); ret = cmsIT8SaveToMem (it8, data, (cmsUInt32Number *) &size); g_assert (ret); /* save file */ ret = g_file_replace_contents (file, data, size, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL, error); if (!ret) goto out; And I'm getting a file with this output: CTI3 DESCRIPTOR "Calibration Target chart information 3" ORIGINATOR "cd-self-test" DEVICE_CLASS "DISPLAY" COLOR_REP "RGB_XYZ" TARGET_INSTRUMENT "huey" NUMBER_OF_FIELDS 7 NUMBER_OF_SETS 1 BEGIN_DATA_FORMAT SAMPLE_ID RGB_R RGB_G RGB_B XYZ_X XYZ_Y XYZ_Z END_DATA_FORMAT BEGIN_DATA 1 0 0 0 0 0 0 END_DATA T Notice the 'T' on the last line? This makes any ti3 file then loaded spit out a "Property data expected" warning. Ideas welcome, thanks! Richard. |
From: <mar...@li...> - 2012-05-08 15:02:17
|
Hi Richard, Yes, it is a bug. Thanks for reporting. There is a null byte \0 that should be written at the end position and it is not. The null terminator is not strictly needed, but is handy because then you get a C string and strlen() and others can work. I'm fixing the code. A temporary solution would be to add the null byte outside the function, as it is guaranteed there it will be there anyway ret = cmsIT8SaveToMem (it8, data, (cmsUInt32Number *) &size); if (ret) { data[size-1] = 0; } Thanks! Marti Maria Richard Hughes <hug...@gm...> escribió: > Hey all, > > I'm trying to use cmsIT8SaveToMem to save a ti3 profile. I'm doing > something like this: > > /* write the file */ > ret = cmsIT8SaveToMem (it8, NULL, (cmsUInt32Number *) &size); > g_assert (ret); > data = g_malloc (size); > ret = cmsIT8SaveToMem (it8, data, (cmsUInt32Number *) &size); > g_assert (ret); > > /* save file */ > ret = g_file_replace_contents (file, data, size, NULL, > FALSE, G_FILE_CREATE_NONE, > NULL, NULL, error); > if (!ret) > goto out; > > And I'm getting a file with this output: > > CTI3 > DESCRIPTOR "Calibration Target chart information 3" > ORIGINATOR "cd-self-test" > DEVICE_CLASS "DISPLAY" > COLOR_REP "RGB_XYZ" > TARGET_INSTRUMENT "huey" > NUMBER_OF_FIELDS 7 > NUMBER_OF_SETS 1 > BEGIN_DATA_FORMAT > SAMPLE_ID RGB_R RGB_G RGB_B XYZ_X XYZ_Y XYZ_Z > END_DATA_FORMAT > BEGIN_DATA > 1 0 0 0 0 0 0 > END_DATA > T > > Notice the 'T' on the last line? This makes any ti3 file then loaded > spit out a "Property data expected" warning. Ideas welcome, thanks! > > Richard. > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Lcms-user mailing list > Lcm...@li... > https://lists.sourceforge.net/lists/listinfo/lcms-user > |
From: Richard H. <hug...@gm...> - 2012-05-08 16:12:37
|
On 8 May 2012 16:02, <mar...@li...> wrote: > Yes, it is a bug. Thanks for reporting. There is a null byte \0 that > should be written at the end position and it is not. Yes, that's what I figured. > I'm fixing the code. A temporary solution would be to add the > null byte outside the function, as it is guaranteed there it will be there > anyway Yup, that's what I've done. I'll remove it when you've done the next release and I can dep on that new version. Thanks for the speedy response, Richard. |