Module: wine Branch: master Commit: 37ee3870a2f94d3960d989dd0cc454b8e1ec7aa6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=37ee3870a2f94d3960d989dd0c...
Author: Daniel Lehman dlehman25@gmail.com Date: Sat Nov 19 08:07:14 2016 -0800
opengl32: Set last error on invalid share in wglCreateContextAttribsARB.
Signed-off-by: Daniel Lehman dlehman25@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/opengl32/tests/opengl.c | 5 +++-- dlls/opengl32/wgl.c | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/opengl32/tests/opengl.c b/dlls/opengl32/tests/opengl.c index 5a0e786..7552d44 100644 --- a/dlls/opengl32/tests/opengl.c +++ b/dlls/opengl32/tests/opengl.c @@ -898,12 +898,13 @@ static void test_opengl3(HDC hdc) { HGLRC gl3Ctx; DWORD error; + SetLastError(0xdeadbeef); gl3Ctx = pwglCreateContextAttribsARB(hdc, (HGLRC)0xdeadbeef, 0); ok(gl3Ctx == 0, "pwglCreateContextAttribsARB using an invalid shareList passed\n"); error = GetLastError(); /* The Nvidia implementation seems to return hresults instead of win32 error codes */ - todo_wine ok(error == ERROR_INVALID_OPERATION || - error == NVIDIA_HRESULT_FROM_WIN32(ERROR_INVALID_OPERATION), "Expected ERROR_INVALID_OPERATION, got error=%x\n", error); + ok(error == ERROR_INVALID_OPERATION || + error == NVIDIA_HRESULT_FROM_WIN32(ERROR_INVALID_OPERATION), "Expected ERROR_INVALID_OPERATION, got error=%x\n", error); wglDeleteContext(gl3Ctx); }
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c index 8e61348..863dea2 100644 --- a/dlls/opengl32/wgl.c +++ b/dlls/opengl32/wgl.c @@ -280,7 +280,11 @@ HGLRC WINAPI wglCreateContextAttribsARB( HDC hdc, HGLRC share, const int *attrib return 0; } if (!funcs->ext.p_wglCreateContextAttribsARB) return 0; - if (share && !(share_ptr = get_handle_ptr( share, HANDLE_CONTEXT ))) return 0; + if (share && !(share_ptr = get_handle_ptr( share, HANDLE_CONTEXT ))) + { + SetLastError( ERROR_INVALID_OPERATION ); + return 0; + } if ((drv_ctx = funcs->ext.p_wglCreateContextAttribsARB( hdc, share_ptr ? share_ptr->u.context->drv_ctx : NULL, attribs ))) {