From 521eb2c71d882202bda107706835d099cc18617e Mon Sep 17 00:00:00 2001 From: marha Date: Tue, 29 Sep 2009 15:59:48 +0000 Subject: Solved run-time downcast problem in debug version. --- xorg-server/mi/micmap.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/xorg-server/mi/micmap.c b/xorg-server/mi/micmap.c index 1d26a5232..f6d760b2f 100644 --- a/xorg-server/mi/micmap.c +++ b/xorg-server/mi/micmap.c @@ -134,18 +134,29 @@ miInitializeColormap(ColormapPtr pmap) unsigned limr, limg, limb; limr = pVisual->redMask >> pVisual->offsetRed; - limg = pVisual->greenMask >> pVisual->offsetGreen; - limb = pVisual->blueMask >> pVisual->offsetBlue; - for(i = 0; i <= maxent; i++) + for(i = 0; i <= min(limr,maxent); i++) { /* rescale to [0..65535] then rgb bits */ pmap->red[i].co.local.red = ((((i * 65535) / limr) >> shift) * 65535) / lim; + } + for(; i <= maxent; i++) pmap->red[i].co.local.red = 65535; + limg = pVisual->greenMask >> pVisual->offsetGreen; + for(i = 0; i <= min(limg,maxent); i++) + { + /* rescale to [0..65535] then rgb bits */ pmap->green[i].co.local.green = ((((i * 65535) / limg) >> shift) * 65535) / lim; + } + for(; i <= maxent; i++) pmap->green[i].co.local.green = 65535; + limb = pVisual->blueMask >> pVisual->offsetBlue; + for(i = 0; i <= min(limb,maxent); i++) + { + /* rescale to [0..65535] then rgb bits */ pmap->blue[i].co.local.blue = ((((i * 65535) / limb) >> shift) * 65535) / lim; } + for(; i <= maxent; i++) pmap->blue[i].co.local.blue = 65535; } else if (pVisual->class == StaticColor) { -- cgit v1.2.3