Re: [Lcms-user] Issue: Maintaining the iohandler->UsedSpace in function MemoryWrite from cmsio0.c
An ICC-based CMM for color management
Brought to you by:
mm2
From: <mar...@li...> - 2012-02-04 16:32:41
|
Hi, Thanks Claudiu, this is certainly a bug, the checking should be done after increasing the used space ---- memmove(ResData ->Block + ResData ->Pointer, Ptr, size); ResData ->Pointer += size; iohandler->UsedSpace += size; if (ResData ->Pointer > iohandler->UsedSpace) iohandler->UsedSpace = ResData ->Pointer; return TRUE; --- Thanks for reporting! Regards Marti Claudiu Cebuc <cc...@gm...> escribió: > Hi, > > > By trying to generate some CSA/CRD resources I have noticed that the > reported size of the actual CSA/CRD writing is bigger than the estimated > size obtained on the NULL stream. > > Namely, it looks that the problem reside in the MemoryWrite, in maintaining > the iohandler->UsedSpace: > > > static > > cmsBool MemoryWrite(struct _cms_io_handler* iohandler, cmsUInt32Number > size, const void *Ptr) > > { > > FILEMEM* ResData = (FILEMEM*) iohandler ->stream; > > if (ResData == NULL) return FALSE; // Housekeeping > > if (size == 0) return TRUE; // Write zero bytes is ok, but does > nothing > > > memmove(ResData ->Block + ResData ->Pointer, Ptr, size); > > ResData ->Pointer += size; > > > > if (ResData ->Pointer > iohandler->UsedSpace) > > iohandler->UsedSpace = ResData ->Pointer; > > > > iohandler->UsedSpace += size; // <== I guess that this line of code > should be removed > > > return TRUE; > > } > > > Best Regards, > > Claudiu. > |