Henri Verbeet : wined3d: Avoid a memcpy() in IWineD3DImpl_FillGLCaps().

Alexandre Julliard julliard at winehq.org
Tue Sep 7 11:22:54 CDT 2010


Module: wine
Branch: master
Commit: 8a8ad1ccd8f0f0b2d4698927de5b4d30330fdf5e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8a8ad1ccd8f0f0b2d4698927de5b4d30330fdf5e

Author: Henri Verbeet <hverbeet at 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;




More information about the wine-cvs mailing list