Module: Demos Branch: master Commit: ed814523b0ea7f6799c4bad13c4f1e5273c85348 URL: http://cgit.freedesktop.org/mesa/demos/commit/?id=ed814523b0ea7f6799c4bad13c4f1e5273c85348
Author: Brian Paul <[email protected]> Date: Mon Jun 9 05:21:37 2014 -0700 glinfo_common: fix extension_supported() function The code did not correctly handle super-string handling. For example, if we were searching for "WGL_ARB_pixel_format" but we found "WGL_ARB_pixel_format_float" we'd stop searching and return 0. Now we search past that initial, incorrect match. Reviewed-by: Ian Romanick <[email protected]> --- src/xdemos/glinfo_common.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/xdemos/glinfo_common.c b/src/xdemos/glinfo_common.c index 3cbe4ed..88bb929 100644 --- a/src/xdemos/glinfo_common.c +++ b/src/xdemos/glinfo_common.c @@ -310,12 +310,22 @@ build_core_profile_extension_list(const struct ext_functions *extfuncs) GLboolean extension_supported(const char *ext, const char *extensionsList) { - const char *p = strstr(extensionsList, ext); - if (p) { - /* check that next char is a space or end of string */ - int extLen = strlen(ext); - if (p[extLen] == 0 || p[extLen] == ' ') - return 1; + while (1) { + const char *p = strstr(extensionsList, ext); + if (p) { + /* check that next char is a space or end of string */ + int extLen = strlen(ext); + if (p[extLen] == 0 || p[extLen] == ' ') { + return 1; + } + else { + /* We found a superset string, keep looking */ + extensionsList += extLen; + } + } + else { + break; + } } return 0; } _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
