nelson@PEAR.ECS.CLARKSON.EDU (12/30/89)
The routine ImgAlloc found in io.c seems to have a bug. First it mallocs
an array of pointers, then fills that array in with more malloced pointers.
Now, since the array is accessed using the y coordinate, you would think
that the size of the array would be related to Ysize. Instead, a reference
is made to Xsize (See below). This seems wrong to me.
-russ
pixel_t **
ImgAlloc()
{
pixel_t **img,
**linep,
**imgend;
noerr = TRUE;
if ((img = (pixel_t **) LINT_CAST(Emalloc((unsigned)Xsize * sizeof(pixel_t *)))) == 0)
return (pixel_t **) 0;
imgend = &img[Ysize];
for (linep = img; linep != imgend; ++linep)
*linep = (pixel_t *) Emalloc((unsigned)Xsize * sizeof (pixel_t));mathew@jane.Jpl.Nasa.Gov (Mathew Yeates) (12/30/89)
In article <2347@pear.ecs.clarkson.edu> nelson@sun.soe.clarkson.edu writes: >The routine ImgAlloc found in io.c seems to have a bug. First it mallocs >an array of pointers, then fills that array in with more malloced pointers. >Now, since the array is accessed using the y coordinate, you would think >that the size of the array would be related to Ysize. Instead, a reference >is made to Xsize (See below). This seems wrong to me. >-russ > > >pixel_t ** >ImgAlloc() >{ > pixel_t **img, > **linep, > **imgend; > > noerr = TRUE; > if ((img = (pixel_t **) LINT_CAST(Emalloc((unsigned)Xsize * sizeof(pixel_t *)))) == 0) > return (pixel_t **) 0; > > imgend = &img[Ysize]; > for (linep = img; linep != imgend; ++linep) > *linep = (pixel_t *) Emalloc((unsigned)Xsize * sizeof (pixel_t)); yes this is incorrect. The first should be Y, the second X. -mathew mathew@jane.jpl.nasa.gov