if((*image_return)->bytes_per_line == 0 ||  height == 0) return XpmNoMemory;
CreateXImage(display, visual, depth, format, width, height, image_return)    Display *display;    Visual *visual;    unsigned int depth;    int format;    unsigned int width;    unsigned int height;    XImage **image_return;{    int bitmap_pad;    /* first get bitmap_pad */    if (depth > 16)	bitmap_pad = 32;    else if (depth > 8)	bitmap_pad = 16;    else	bitmap_pad = 8;    /* then create the XImage with data = NULL and bytes_per_line = 0 */    *image_return = XCreateImage(display, visual, depth, format, 0, 0,				 width, height, bitmap_pad, 0);    if (!*image_return)	return (XpmNoMemory);#if !defined(FOR_MSW) && !defined(AMIGA)    if (height != 0 && (*image_return)->bytes_per_line >= UINT_MAX / height)	return XpmNoMemory;    /* now that bytes_per_line must have been set properly alloc data */    (*image_return)->data =	(char *) XpmMalloc((*image_return)->bytes_per_line * height);    if (!(*image_return)->data) {	XDestroyImage(*image_return);	*image_return = NULL;	return (XpmNoMemory);    }#else    /* under FOR_MSW and AMIGA XCreateImage has done it all */#endif    return (XpmSuccess);}