Rémi Bernon (@rbernon) commented about dlls/opengl32/unix_wgl.c:
+ for (p = str; p < str + len; p++) if (*p == ' ') size++; + if (!(extensions = malloc( size * sizeof(*extensions) + len + 1 ))) return; + out = (char *)&extensions[size]; + memcpy( out, str, len ); + out[len] = 0; + if (*out) extensions[count++] = out; + while (*out) + { + if (*out == ' ') + { + *out = 0; + extensions[count++] = out + 1; + } + out++; + } + assert( count + ARRAYSIZE(legacy_extensions) - 1 == size ); Can glGetString really return NULL? What about making this more readable?
```suggestion:-22+0 const char *str, *ptr; char *out; if (!(str = (const char *)funcs->p_glGetString( GL_EXTENSIONS ))) str = ""; for (ptr = str; *ptr; ptr++) if (ptr == str || (ptr[0] == ' ' && ptr[1])) size++; if (ptr > str && ptr[-1] == ' ') ptr--; /* strip trailing space */ if (!(extensions = malloc( size * sizeof(*extensions) + (ptr - str) ))) return; out = (char *)&extensions[size]; memcpy( out, str, ptr - str ); for (ptr = strtok( out, " " ); ptr; ptr = strtok( NULL, " " )) extensions[count++] = ptr; assert( count + ARRAY_SIZE(legacy_extensions) - 1 == size ); ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9263#note_119449