/* To check memory leaks, run such as 'valgrind --leak-check=full ./bug00185' */ int main() { gdImagePtr im; char *path; path = gdTestFilePath("xpm/bug00185.xpm"); im = gdImageCreateFromXpm(path); free(path); if (!im) return 1; gdImageDestroy(im); path = gdTestFilePath("xpm/bug00185_damaged.xpm"); im = gdImageCreateFromXpm(path); free(path); if (!im) return 0; gdImageDestroy(im); return 2; }
int graphicsGdImageCreateFromXpm(gdImage **dst, const char *path) { #ifdef GD_XPM size_t len = strlen(path); char *temp = calloc(len + 1, sizeof(char)); /* with terminating `\0' */ if (temp == NULL) { graphicsGdRaiseCondition("calloc failed: %s", "graphicsGdImageCreateFromXpm"); return -1; } strncpy(temp, path, len + 1); *dst = gdImageCreateFromXpm(temp); free(temp); return 0; #else graphicsGdRaiseCondition("unsupported format: %s", "Xpm"); return -2; #endif }
int main(void) { gdImagePtr im; char path[1024]; int c, result; sprintf(path, "%s/xpm/bug00166.xpm", GDTEST_TOP_DIR); im = gdImageCreateFromXpm(path); if (!im) { return 2; } c = gdImageGetPixel(im, 1, 1); if (gdImageRed(im, c) == 0xAA && gdImageGreen(im, c) == 0xBB && gdImageBlue(im, c) == 0xCC) { result = 0; } else { result = 1; } gdImageDestroy(im); return result; }
int main(void) { gdImagePtr im; char path[1024]; int c, result; sprintf(path, "%s/xpm/color_name.xpm", GDTEST_TOP_DIR); im = gdImageCreateFromXpm(path); if (!im) { return 2; } c = gdImageGetPixel(im, 2, 2); if (gdImageRed(im, c) == 0xFF && gdImageGreen(im, c) == 0xFF && gdImageBlue(im, c) == 0x0) { result = 0; } else { result = 1; } gdImageDestroy(im); return result; }
static gdImagePtr gd_loadimage(GVJ_t * job, usershape_t *us) { assert(job); assert(us); assert(us->name); if (us->data) { if (us->datafree != gd_freeimage) { us->datafree(us); /* free incompatible cache data */ us->data = NULL; us->datafree = NULL; } } if (!us->data) { /* read file into cache */ if (!gvusershape_file_access(us)) return NULL; switch (us->type) { #if 0 case FT_GD: im = gdImageCreateFromGd(us->f); break; case FT_GD2: im = gdImageCreateFromGd2(us->f); break; #endif #ifdef HAVE_GD_PNG case FT_PNG: us->data = (void*)gdImageCreateFromPng(us->f); break; #endif #ifdef HAVE_GD_GIF case FT_GIF: us->data = (void*)gdImageCreateFromGif(us->f); break; #endif #ifdef HAVE_GD_JPEG case FT_JPEG: us->data = (void*)gdImageCreateFromJpeg(us->f); break; #endif #if 0 #ifdef HAVE_GD_XPM case FT_XPM: us->data = (void*)gdImageCreateFromXpm(us->f); break; #endif #ifdef HAVE_GD_WBMP case FT_WBMP: us->data = (void*)gdImageCreateFromWbmp(us->f); break; #endif #endif default: break; } if (us->data) us->datafree = gd_freeimage; gvusershape_file_release(us); } return (gdImagePtr)(us->data); }