Daniel Lehman : opengl32: Set last error on invalid share in wglCreateContextAttribsARB.
Module: wine Branch: master Commit: 37ee3870a2f94d3960d989dd0cc454b8e1ec7aa6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=37ee3870a2f94d3960d989dd0c... Author: Daniel Lehman <dlehman25(a)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(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)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 ))) {
participants (1)
-
Alexandre Julliard