diff --git a/Xext/panoramiX.c b/Xext/panoramiX.c index b3bca7c52f..8ba79d8e63 100644 --- a/Xext/panoramiX.c +++ b/Xext/panoramiX.c @@ -1138,9 +1138,7 @@ XineramaGetImageData(DrawablePtr *pDrawables, { RegionRec SrcRegion, GrabRegion; BoxRec SrcBox; - int size = 0; DrawablePtr pDraw = pDrawables[0]; - char *ScratchMem = NULL; /* find box in logical screen space */ SrcBox.x1 = left; @@ -1192,6 +1190,9 @@ XineramaGetImageData(DrawablePtr *pDrawables, if (nbox) { BoxRec *pbox = RegionRects(&GrabRegion); + int size = 0; + char *ScratchMem = NULL; + while (nbox--) { int w = pbox->x2 - pbox->x1; int h = pbox->y2 - pbox->y1; @@ -1275,15 +1276,13 @@ XineramaGetImageData(DrawablePtr *pDrawables, pbox++; } + free(ScratchMem); RegionSubtract(&SrcRegion, &SrcRegion, &GrabRegion); if (!RegionNotEmpty(&SrcRegion)) break; } - } - free(ScratchMem); - RegionUninit(&SrcRegion); RegionUninit(&GrabRegion); }