Henri Verbeet : wined3d: Avoid a memcpy() in IWineD3DImpl_FillGLCaps().
Module: wine Branch: master Commit: 8a8ad1ccd8f0f0b2d4698927de5b4d30330fdf5e URL: http://source.winehq.org/git/wine.git/?a=commit;h=8a8ad1ccd8f0f0b2d4698927de... Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Mon Sep 6 22:18:52 2010 +0200 wined3d: Avoid a memcpy() in IWineD3DImpl_FillGLCaps(). And associated stack buffer. --- dlls/wined3d/directx.c | 10 ++++------ 1 files changed, 4 insertions(+), 6 deletions(-) diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c index 2bf2346..bf75ca6 100644 --- a/dlls/wined3d/directx.c +++ b/dlls/wined3d/directx.c @@ -2336,22 +2336,20 @@ static BOOL IWineD3DImpl_FillGLCaps(struct wined3d_adapter *adapter) while (*GL_Extensions) { const char *start; - char current_ext[256]; while (isspace(*GL_Extensions)) ++GL_Extensions; start = GL_Extensions; while (!isspace(*GL_Extensions) && *GL_Extensions) ++GL_Extensions; len = GL_Extensions - start; - if (!len || len >= sizeof(current_ext)) continue; + if (!len) continue; - memcpy(current_ext, start, len); - current_ext[len] = '\0'; - TRACE_(d3d_caps)("- %s\n", debugstr_a(current_ext)); + TRACE_(d3d_caps)("- %s\n", debugstr_an(start, len)); for (i = 0; i < (sizeof(EXTENSION_MAP) / sizeof(*EXTENSION_MAP)); ++i) { - if (!strcmp(current_ext, EXTENSION_MAP[i].extension_string)) + if (len == strlen(EXTENSION_MAP[i].extension_string) + && !memcmp(start, EXTENSION_MAP[i].extension_string, len)) { TRACE_(d3d_caps)(" FOUND: %s support.\n", EXTENSION_MAP[i].extension_string); gl_info->supported[EXTENSION_MAP[i].extension] = TRUE;
participants (1)
-
Alexandre Julliard