st/wgl: check for NULL piAttribList in wglCreatePbufferARB()

Java2d opengl pipeline passes NULL piAttribList to
wglCreatePbufferARB(). So skip parsing the attribute list
if it is NULL.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Neha Bhende <bhenden@vmware.com>
This commit is contained in:
Charmaine Lee 2018-07-06 15:52:37 -07:00
parent a695de5845
commit 097952abaa
1 changed files with 41 additions and 39 deletions

View File

@ -101,45 +101,47 @@ wglCreatePbufferARB(HDC hCurrentDC,
return 0;
}
for (piAttrib = piAttribList; *piAttrib; piAttrib++) {
switch (*piAttrib) {
case WGL_PBUFFER_LARGEST_ARB:
piAttrib++;
useLargest = *piAttrib;
break;
case WGL_TEXTURE_FORMAT_ARB:
/* WGL_ARB_render_texture */
piAttrib++;
textureFormat = *piAttrib;
if (textureFormat != WGL_TEXTURE_RGB_ARB &&
textureFormat != WGL_TEXTURE_RGBA_ARB &&
textureFormat != WGL_NO_TEXTURE_ARB) {
SetLastError(ERROR_INVALID_DATA);
return 0;
}
break;
case WGL_TEXTURE_TARGET_ARB:
/* WGL_ARB_render_texture */
piAttrib++;
textureTarget = *piAttrib;
if (textureTarget != WGL_TEXTURE_CUBE_MAP_ARB &&
textureTarget != WGL_TEXTURE_1D_ARB &&
textureTarget != WGL_TEXTURE_2D_ARB &&
textureTarget != WGL_NO_TEXTURE_ARB) {
SetLastError(ERROR_INVALID_DATA);
return 0;
}
break;
case WGL_MIPMAP_TEXTURE_ARB:
/* WGL_ARB_render_texture */
piAttrib++;
textureMipmap = !!*piAttrib;
break;
default:
SetLastError(ERROR_INVALID_DATA);
debug_printf("wgl: Unsupported attribute 0x%x in %s\n",
*piAttrib, __func__);
return 0;
if (piAttribList) {
for (piAttrib = piAttribList; *piAttrib; piAttrib++) {
switch (*piAttrib) {
case WGL_PBUFFER_LARGEST_ARB:
piAttrib++;
useLargest = *piAttrib;
break;
case WGL_TEXTURE_FORMAT_ARB:
/* WGL_ARB_render_texture */
piAttrib++;
textureFormat = *piAttrib;
if (textureFormat != WGL_TEXTURE_RGB_ARB &&
textureFormat != WGL_TEXTURE_RGBA_ARB &&
textureFormat != WGL_NO_TEXTURE_ARB) {
SetLastError(ERROR_INVALID_DATA);
return 0;
}
break;
case WGL_TEXTURE_TARGET_ARB:
/* WGL_ARB_render_texture */
piAttrib++;
textureTarget = *piAttrib;
if (textureTarget != WGL_TEXTURE_CUBE_MAP_ARB &&
textureTarget != WGL_TEXTURE_1D_ARB &&
textureTarget != WGL_TEXTURE_2D_ARB &&
textureTarget != WGL_NO_TEXTURE_ARB) {
SetLastError(ERROR_INVALID_DATA);
return 0;
}
break;
case WGL_MIPMAP_TEXTURE_ARB:
/* WGL_ARB_render_texture */
piAttrib++;
textureMipmap = !!*piAttrib;
break;
default:
SetLastError(ERROR_INVALID_DATA);
debug_printf("wgl: Unsupported attribute 0x%x in %s\n",
*piAttrib, __func__);
return 0;
}
}
}