[argyllcms] icc__lab2lab.c - compilation problem

Hello again!

I would like to (at least partially) implement the dummy colorimeter
device for Argyll. To even dream of doing anything like this I first
need a working program compiled from the source. I am using the
Microsoft Visual C++ 2008 Express Edition and I cannot get this to
work...

More specificially, take a look at the following snippet from
icc/lab2lab.c (line 193):

/* Use helper function to do the hard work. */
if (wo->set_tables(wo, NULL,
   icSigLabData,        /* Input color space */
   icSigLabData,       /* Output color space */
   Lab_Labp,           /* Input transfer function, Lab->Lab' */
   NULL, NULL,        /* Use default Maximum range of Lab' values */
   Labp_Labp,        /* Lab' -> Lab' transfer function */
   NULL, NULL,       /* Use default Maximum range of Lab' values */
   Labp_Lab         /* Linear output transform Lab'->Lab */
) != 0)
 error("Setting 16 bit Lab->Lab Lut failed: %d, %s",wr_icco->errc,wr_icco->err);
-------------------------
As wo is
    icmLut *wo;
hence we take a look at the icc/icc.h to find in line 682:
-------------------------
struct _icmLut {
// [..........]

/* Helper function to setup a Lut tables contents */
        int (*set_tables) (
                struct _icmLut *p,                                              
/* Pointer to Lut object */
                int     flags,                                                  
/* Setting flags */
                void   *cbctx,                                                  
/* Opaque callback context pointer value */
                icColorSpaceSignature insig,                    /* Input color 
space */
                icColorSpaceSignature outsig,                   /* Output color 
space */
[.............]
}

This would imply that "icSigLabData" is converted to "cbctx" whereas I
think it should be set to "insig".

What am I missing?
If this is a genuine Argyll error and not some Microsoft's trash, then
take a look at line 209 of lab2lab.c:
wr_icco->free(wr_icco);
According to IntelliSense, wr_icco (of type icc*) does NOT contain a
member called "free".....


Other related posts: