From: Rémi Bernon <rbernon(a)codeweavers.com> --- dlls/opengl32/wgl.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c index 2e85e639f51..3b3eed46faf 100644 --- a/dlls/opengl32/wgl.c +++ b/dlls/opengl32/wgl.c @@ -487,15 +487,17 @@ void WINAPI glGetIntegerv(GLenum pname, GLint *data) const GLubyte * WINAPI glGetStringi(GLenum name, GLuint index) { - const struct opengl_funcs *funcs = NtCurrentTeb()->glTable; + struct glGetStringi_params args = + { + .name = name, + .index = index, + }; + NTSTATUS status; TRACE("(%d, %d)\n", name, index); - if (!funcs->ext.p_glGetStringi) - { - void **func_ptr = (void **)&funcs->ext.p_glGetStringi; - *func_ptr = funcs->wgl.p_wglGetProcAddress("glGetStringi"); - } + /* make sure unix pointer is loaded */ + if (!wglGetProcAddress( "glGetStringi" )) return NULL; if (name == GL_EXTENSIONS) { @@ -509,10 +511,13 @@ const GLubyte * WINAPI glGetStringi(GLenum name, GLuint index) while (index + disabled_count >= *disabled_exts++) disabled_count++; - return funcs->ext.p_glGetStringi(name, index + disabled_count); + + args.index = index + disabled_count; } } - return funcs->ext.p_glGetStringi(name, index); + + if ((status = UNIX_CALL( glGetStringi, &args ))) WARN( "glGetStringi returned %#x\n", status ); + return args.ret; } static int compar(const void *elt_a, const void *elt_b) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/1275