AIGLX/DRI1: Pay more attention to return value from DRIGetDrawableInfo().
Could have crashed otherwise if the num(Back)ClipRects variables referenced by the caller weren't pre-initialized to 0.
This commit is contained in:
parent
b3e981c9d4
commit
6ab8d6010a
|
@ -740,7 +740,7 @@ getDrawableInfo(__DRIdrawable *driDrawable,
|
||||||
numBackClipRects, &pBackClipRects);
|
numBackClipRects, &pBackClipRects);
|
||||||
__glXleaveServer(GL_FALSE);
|
__glXleaveServer(GL_FALSE);
|
||||||
|
|
||||||
if (*numClipRects > 0) {
|
if (retval && *numClipRects > 0) {
|
||||||
size = sizeof (drm_clip_rect_t) * *numClipRects;
|
size = sizeof (drm_clip_rect_t) * *numClipRects;
|
||||||
*ppClipRects = xalloc (size);
|
*ppClipRects = xalloc (size);
|
||||||
|
|
||||||
|
@ -771,16 +771,20 @@ getDrawableInfo(__DRIdrawable *driDrawable,
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*ppClipRects = NULL;
|
*ppClipRects = NULL;
|
||||||
|
*numClipRects = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*numBackClipRects > 0) {
|
if (retval && *numBackClipRects > 0) {
|
||||||
size = sizeof (drm_clip_rect_t) * *numBackClipRects;
|
size = sizeof (drm_clip_rect_t) * *numBackClipRects;
|
||||||
*ppBackClipRects = xalloc (size);
|
*ppBackClipRects = xalloc (size);
|
||||||
if (*ppBackClipRects != NULL)
|
if (*ppBackClipRects != NULL)
|
||||||
memcpy (*ppBackClipRects, pBackClipRects, size);
|
memcpy (*ppBackClipRects, pBackClipRects, size);
|
||||||
|
else
|
||||||
|
*numBackClipRects = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*ppBackClipRects = NULL;
|
*ppBackClipRects = NULL;
|
||||||
|
*numBackClipRects = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user