This commit is contained in:
Collin 2025-07-04 17:29:13 +02:00 committed by GitHub
commit 7296234f40
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1657,7 +1657,7 @@ AllocDirect(int client, ColormapPtr pmap, int c, int r, int g, int b,
return BadAlloc; return BadAlloc;
/* start out with empty pixels */ /* start out with empty pixels */
for (p = pixels; p < pixels + c; p++) for (p = pixels; (p - pixels) < c; p++)
*p = 0; *p = 0;
ppixRed = calloc(npixR, sizeof(Pixel)); ppixRed = calloc(npixR, sizeof(Pixel));
@ -1713,33 +1713,33 @@ AllocDirect(int client, ColormapPtr pmap, int c, int r, int g, int b,
*pbmask <<= pmap->pVisual->offsetBlue; *pbmask <<= pmap->pVisual->offsetBlue;
ppix = rpix + pmap->numPixelsRed[client]; ppix = rpix + pmap->numPixelsRed[client];
for (pDst = pixels, p = ppixRed; p < ppixRed + npixR; p++) { for (pDst = pixels, p = ppixRed; (size_t)(p - ppixRed) < npixR; p++) {
*ppix++ = *p; *ppix++ = *p;
if (p < ppixRed + c) if ((size_t)(p - ppixRed) < c)
*pDst++ |= *p << pmap->pVisual->offsetRed; *pDst++ |= *p << pmap->pVisual->offsetRed;
} }
pmap->numPixelsRed[client] += npixR; pmap->numPixelsRed[client] += npixR;
pmap->freeRed -= npixR; pmap->freeRed -= npixR;
ppix = gpix + pmap->numPixelsGreen[client]; ppix = gpix + pmap->numPixelsGreen[client];
for (pDst = pixels, p = ppixGreen; p < ppixGreen + npixG; p++) { for (pDst = pixels, p = ppixGreen; (size_t)(p - ppixGreen) < npixG; p++) {
*ppix++ = *p; *ppix++ = *p;
if (p < ppixGreen + c) if ((size_t)(p - ppixGreen) < c)
*pDst++ |= *p << pmap->pVisual->offsetGreen; *pDst++ |= *p << pmap->pVisual->offsetGreen;
} }
pmap->numPixelsGreen[client] += npixG; pmap->numPixelsGreen[client] += npixG;
pmap->freeGreen -= npixG; pmap->freeGreen -= npixG;
ppix = bpix + pmap->numPixelsBlue[client]; ppix = bpix + pmap->numPixelsBlue[client];
for (pDst = pixels, p = ppixBlue; p < ppixBlue + npixB; p++) { for (pDst = pixels, p = ppixBlue; (size_t)(p - ppixBlue) < npixB; p++) {
*ppix++ = *p; *ppix++ = *p;
if (p < ppixBlue + c) if ((size_t)(p - ppixBlue) < c)
*pDst++ |= *p << pmap->pVisual->offsetBlue; *pDst++ |= *p << pmap->pVisual->offsetBlue;
} }
pmap->numPixelsBlue[client] += npixB; pmap->numPixelsBlue[client] += npixB;
pmap->freeBlue -= npixB; pmap->freeBlue -= npixB;
for (pDst = pixels; pDst < pixels + c; pDst++) for (pDst = pixels; (pDst - pixels) < c; pDst++)
*pDst |= ALPHAMASK(pmap->pVisual); *pDst |= ALPHAMASK(pmap->pVisual);
free(ppixBlue); free(ppixBlue);
@ -1771,7 +1771,7 @@ AllocPseudo(int client, ColormapPtr pmap, int c, int r, Bool contig,
ppix = reallocarray(pmap->clientPixelsRed[client], ppix = reallocarray(pmap->clientPixelsRed[client],
pmap->numPixelsRed[client] + npix, sizeof(Pixel)); pmap->numPixelsRed[client] + npix, sizeof(Pixel));
if (!ppix) { if (!ppix) {
for (p = ppixTemp; p < ppixTemp + npix; p++) for (p = ppixTemp; (p - ppixTemp) < npix; p++)
pmap->red[*p].refcnt = 0; pmap->red[*p].refcnt = 0;
free(ppixTemp); free(ppixTemp);
return BadAlloc; return BadAlloc;
@ -1780,9 +1780,9 @@ AllocPseudo(int client, ColormapPtr pmap, int c, int r, Bool contig,
ppix += pmap->numPixelsRed[client]; ppix += pmap->numPixelsRed[client];
*pppixFirst = ppix; *pppixFirst = ppix;
pDst = pixels; pDst = pixels;
for (p = ppixTemp; p < ppixTemp + npix; p++) { for (p = ppixTemp; (p - ppixTemp) < npix; p++) {
*ppix++ = *p; *ppix++ = *p;
if (p < ppixTemp + c) if ((p - ppixTemp) < c)
*pDst++ = *p; *pDst++ = *p;
} }
pmap->numPixelsRed[client] += npix; pmap->numPixelsRed[client] += npix;