st/wgl: check for hPbuffer=0 in wgl pbuffer functions
Per the GL_WGL_pbuffer spec, generate ERROR_INVALID_HANDLE and return FALSE (and don't segfault). Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
@@ -239,6 +239,11 @@ wglGetPbufferDCARB(HPBUFFERARB hPbuffer)
|
||||
struct stw_framebuffer *fb;
|
||||
HDC hDC;
|
||||
|
||||
if (!hPbuffer) {
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
fb = (struct stw_framebuffer *)hPbuffer;
|
||||
|
||||
hDC = GetDC(fb->hWnd);
|
||||
@@ -255,6 +260,11 @@ wglReleasePbufferDCARB(HPBUFFERARB hPbuffer,
|
||||
{
|
||||
struct stw_framebuffer *fb;
|
||||
|
||||
if (!hPbuffer) {
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
fb = (struct stw_framebuffer *)hPbuffer;
|
||||
|
||||
return ReleaseDC(fb->hWnd, hDC);
|
||||
@@ -266,6 +276,11 @@ wglDestroyPbufferARB(HPBUFFERARB hPbuffer)
|
||||
{
|
||||
struct stw_framebuffer *fb;
|
||||
|
||||
if (!hPbuffer) {
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fb = (struct stw_framebuffer *)hPbuffer;
|
||||
|
||||
/* This will destroy all our data */
|
||||
@@ -280,6 +295,11 @@ wglQueryPbufferARB(HPBUFFERARB hPbuffer,
|
||||
{
|
||||
struct stw_framebuffer *fb;
|
||||
|
||||
if (!hPbuffer) {
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fb = (struct stw_framebuffer *)hPbuffer;
|
||||
|
||||
switch (iAttribute) {
|
||||
|
||||
Reference in New Issue
Block a user