From: Rémi Bernon rbernon@codeweavers.com
--- dlls/opengl32/unix_wgl.c | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-)
diff --git a/dlls/opengl32/unix_wgl.c b/dlls/opengl32/unix_wgl.c index 4f346b39226..566a2ca20a2 100644 --- a/dlls/opengl32/unix_wgl.c +++ b/dlls/opengl32/unix_wgl.c @@ -1233,29 +1233,20 @@ static void make_context_current( TEB *teb, const struct opengl_funcs *funcs, HD } else { - const char *str = (const char *)funcs->p_glGetString( GL_EXTENSIONS ); - size_t len = strlen( str ); - const char *p; - char *ext; - if (!str) str = ""; - if ((len = strlen( str )) && str[len - 1] == ' ') len--; - if (*str) size++; - for (p = str; p < str + len; p++) if (*p == ' ') size++; - if (!(extensions = malloc( size * sizeof(*extensions) + len + 1 ))) return; - ext = (char *)&extensions[size]; - memcpy( ext, str, len ); - ext[len] = 0; - if (*ext) extensions[count++] = ext; - while (*ext) - { - if (*ext == ' ') - { - *ext = 0; - extensions[count++] = ext + 1; - } - ext++; - } - assert( count + ARRAYSIZE(legacy_extensions) - 1 == size ); + const char *str, *ptr; + char *out; + + if (!(str = (const char *)funcs->p_glGetString( GL_EXTENSIONS ))) str = ""; + + for (ptr = str; *ptr; ptr++) if (*ptr == ' ') size++; + if (ptr != str && ptr[-1] != ' ') size++; + + if (!(extensions = malloc( size * sizeof(*extensions) + (ptr - str) ))) return; + out = (char *)&extensions[size]; + memcpy( out, str, ptr - str ); + + for (ptr = strtok( out, " " ); ptr && *ptr; ptr = strtok( NULL, " " )) extensions[count++] = ptr; + assert( count + ARRAY_SIZE(legacy_extensions) - 1 == size ); }
if (!disabled && !(disabled = query_opengl_option( "DisabledExtensions" ))) disabled = "";