diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c index 0b320dfe5..5fb7f09a8 100644 --- a/hw/vfb/InitOutput.c +++ b/hw/vfb/InitOutput.c @@ -480,20 +480,21 @@ vfbInstallColormap(ColormapPtr pmap) prgb = xallocarray(entries, sizeof(xrgb)); defs = xallocarray(entries, sizeof(xColorItem)); - for (i = 0; i < entries; i++) - ppix[i] = i; - /* XXX truecolor */ - QueryColors(pmap, entries, ppix, prgb, serverClient); + if (ppix && prgb && defs) { + for (i = 0; i < entries; i++) + ppix[i] = i; + /* XXX truecolor */ + QueryColors(pmap, entries, ppix, prgb, serverClient); - for (i = 0; i < entries; i++) { /* convert xrgbs to xColorItems */ - defs[i].pixel = ppix[i] & 0xff; /* change pixel to index */ - defs[i].red = prgb[i].red; - defs[i].green = prgb[i].green; - defs[i].blue = prgb[i].blue; - defs[i].flags = DoRed | DoGreen | DoBlue; + for (i = 0; i < entries; i++) { /* convert xrgbs to xColorItems */ + defs[i].pixel = ppix[i] & 0xff; /* change pixel to index */ + defs[i].red = prgb[i].red; + defs[i].green = prgb[i].green; + defs[i].blue = prgb[i].blue; + defs[i].flags = DoRed | DoGreen | DoBlue; + } + (*pmap->pScreen->StoreColors) (pmap, entries, defs); } - (*pmap->pScreen->StoreColors) (pmap, entries, defs); - free(ppix); free(prgb); free(defs);