[PATCH 0/2] MR10124: wined3d: Fix an off-by-one error accessing the pixel_formats array.
From: Patrick Zacharias <1475802+Fighter19@users.noreply.github.com> --- dlls/wined3d/swapchain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 0e3cc466d92..4c20587b81d 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -630,7 +630,7 @@ static void swapchain_gl_present(struct wined3d_swapchain *swapchain, TRACE("Presenting DC %p.\n", context_gl->dc); - pixel_format = &wined3d_adapter_gl(swapchain->device->adapter)->pixel_formats[context_gl->pixel_format]; + pixel_format = &wined3d_adapter_gl(swapchain->device->adapter)->pixel_formats[context_gl->pixel_format - 1]; if (context_gl->dc == wined3d_device_gl(swapchain->device)->backup_dc || (pixel_format->swap_method != WGL_SWAP_COPY_ARB && swapchain_present_is_partial_copy(swapchain, dst_rect))) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10124
From: Elizabeth Figura <zfigura@codeweavers.com> It's redundant with the array index. --- dlls/wined3d/adapter_gl.c | 6 ++---- dlls/wined3d/context_gl.c | 2 +- dlls/wined3d/wined3d_gl.h | 1 + dlls/wined3d/wined3d_private.h | 1 - 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/dlls/wined3d/adapter_gl.c b/dlls/wined3d/adapter_gl.c index e33e27b4cc3..42681b8ea4e 100644 --- a/dlls/wined3d/adapter_gl.c +++ b/dlls/wined3d/adapter_gl.c @@ -3978,7 +3978,6 @@ static void wined3d_adapter_init_fb_cfgs(struct wined3d_adapter_gl *adapter_gl, if (!GL_EXTCALL(wglGetPixelFormatAttribivARB(dc, format_id, 0, attrib_count, attribs, values))) continue; - cfg->iPixelFormat = format_id; cfg->redSize = values[0]; cfg->greenSize = values[1]; cfg->blueSize = values[2]; @@ -4011,7 +4010,7 @@ static void wined3d_adapter_init_fb_cfgs(struct wined3d_adapter_gl *adapter_gl, TRACE("iPixelFormat=%d, iPixelType=%#x, doubleBuffer=%d, RGBA=%d/%d/%d/%d, " "depth=%d, stencil=%d, samples=%d, windowDrawable=%d\n", - cfg->iPixelFormat, cfg->iPixelType, cfg->doubleBuffer, + format_id, cfg->iPixelType, cfg->doubleBuffer, cfg->redSize, cfg->greenSize, cfg->blueSize, cfg->alphaSize, cfg->depthSize, cfg->stencilSize, cfg->numSamples, cfg->windowDrawable); @@ -4044,7 +4043,6 @@ static void wined3d_adapter_init_fb_cfgs(struct wined3d_adapter_gl *adapter_gl, continue; } - cfg->iPixelFormat = format_id; cfg->redSize = pfd.cRedBits; cfg->greenSize = pfd.cGreenBits; cfg->blueSize = pfd.cBlueBits; @@ -4061,7 +4059,7 @@ static void wined3d_adapter_init_fb_cfgs(struct wined3d_adapter_gl *adapter_gl, TRACE("iPixelFormat=%d, iPixelType=%#x, doubleBuffer=%d, RGBA=%d/%d/%d/%d, " "depth=%d, stencil=%d, windowDrawable=%d\n", - cfg->iPixelFormat, cfg->iPixelType, cfg->doubleBuffer, + format_id, cfg->iPixelType, cfg->doubleBuffer, cfg->redSize, cfg->greenSize, cfg->blueSize, cfg->alphaSize, cfg->depthSize, cfg->stencilSize, cfg->windowDrawable); diff --git a/dlls/wined3d/context_gl.c b/dlls/wined3d/context_gl.c index 730c6db94aa..e5b41ffc783 100644 --- a/dlls/wined3d/context_gl.c +++ b/dlls/wined3d/context_gl.c @@ -1701,7 +1701,7 @@ static int context_choose_pixel_format(const struct wined3d_device *device, HDC if (value > current_value) { - iPixelFormat = cfg->iPixelFormat; + iPixelFormat = i + 1; current_value = value; } } diff --git a/dlls/wined3d/wined3d_gl.h b/dlls/wined3d/wined3d_gl.h index 00c82c7ac0a..c9c7118c59e 100644 --- a/dlls/wined3d/wined3d_gl.h +++ b/dlls/wined3d/wined3d_gl.h @@ -815,6 +815,7 @@ struct wined3d_adapter_gl struct wined3d_gl_info gl_info; + /* Indexed by the WGL pixel format index minus 1. */ struct wined3d_pixel_format *pixel_formats; unsigned int pixel_format_count; }; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 934239e624f..65fc70afb59 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2072,7 +2072,6 @@ extern const struct wined3d_light WINED3D_default_light; struct wined3d_pixel_format { - int iPixelFormat; /* WGL pixel format */ int iPixelType; /* WGL pixel type e.g. WGL_TYPE_RGBA_ARB, WGL_TYPE_RGBA_FLOAT_ARB or WGL_TYPE_COLORINDEX_ARB */ int redSize, greenSize, blueSize, alphaSize, colorSize; int depthSize, stencilSize; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10124
This merge request was approved by Elizabeth Figura. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10124
participants (3)
-
Elizabeth Figura -
Elizabeth Figura (@zfigura) -
Patrick Zacharias