mirror of https://github.com/mpv-player/mpv
vo_opengl: check extensions properly
With the previous commit, we have no need anymore to check a part of an extension string (for ignoring a prefix). So check the extension string properly, instead of just using the broken old strstr() method, which could accidentally ignore prefixes or suffixes. Do this by extending the check to whether the extension name is properly delimited by spaces or string start/end.
This commit is contained in:
parent
85c21ae409
commit
6d9f15a8ab
|
@ -79,6 +79,14 @@ static void GLAPIENTRY dummy_glBindFramebuffer(GLenum target, GLuint framebuffer
|
|||
assert(framebuffer == 0);
|
||||
}
|
||||
|
||||
static bool check_ext(GL *gl, const char *name)
|
||||
{
|
||||
const char *exts = gl->extensions;
|
||||
char *s = strstr(exts, name);
|
||||
char *e = s ? s + strlen(name) : NULL;
|
||||
return s && (s == exts || s[-1] == ' ') && (e[0] == ' ' || !e[0]);
|
||||
}
|
||||
|
||||
#define FN_OFFS(name) offsetof(GL, name)
|
||||
|
||||
#define DEF_FN(name) {FN_OFFS(name), {"gl" # name}}
|
||||
|
@ -418,7 +426,7 @@ void mpgl_load_functions2(GL *gl, void *(*get_fn)(void *ctx, const char *n),
|
|||
if (ver_core)
|
||||
must_exist = version >= ver_core;
|
||||
|
||||
if (section->extension && strstr(gl->extensions, section->extension))
|
||||
if (section->extension && check_ext(gl, section->extension))
|
||||
exists = true;
|
||||
|
||||
exists |= must_exist;
|
||||
|
|
Loading…
Reference in New Issue