diff options
Diffstat (limited to 'src/mbgl/gl/extension.cpp')
-rw-r--r-- | src/mbgl/gl/extension.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/mbgl/gl/extension.cpp b/src/mbgl/gl/extension.cpp index ee94e8ecfd..e6b4d9156e 100644 --- a/src/mbgl/gl/extension.cpp +++ b/src/mbgl/gl/extension.cpp @@ -4,6 +4,7 @@ #include <mutex> #include <string> #include <vector> +#include <cstring> namespace mbgl { namespace gl { @@ -26,18 +27,14 @@ static std::once_flag initializeExtensionsOnce; void InitializeExtensions(glProc (*getProcAddress)(const char*)) { std::call_once(initializeExtensionsOnce, [getProcAddress] { - const char* extensionsPtr = - reinterpret_cast<const char*>(MBGL_CHECK_ERROR(glGetString(GL_EXTENSIONS))); - - if (!extensionsPtr) - return; - - const std::string extensions = extensionsPtr; - for (auto fn : detail::extensionFunctions()) { - for (auto probe : fn.second) { - if (extensions.find(probe.first) != std::string::npos) { - *fn.first = getProcAddress(probe.second); - break; + if (const char* extensions = + reinterpret_cast<const char*>(MBGL_CHECK_ERROR(glGetString(GL_EXTENSIONS)))) { + for (auto fn : detail::extensionFunctions()) { + for (auto probe : fn.second) { + if (strstr(extensions, probe.first) != nullptr) { + *fn.first = getProcAddress(probe.second); + break; + } } } } |