Fix a crash on Android with Align2Npot2 (#8070)

* Fix a crash on Android with Align2Npot2

glGetString can be NULL. If stored in a string it triggers a SIGSEGV.
Instead do a basic strstr and verify the pointer
* Better Align2Npot2 check (+ performance)
This commit is contained in:
Loïc Blot 2019-01-07 17:05:18 +01:00 committed by GitHub
parent 07c1c72aae
commit 95d4ff6d1b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1012,13 +1012,14 @@ video::IImage * Align2Npot2(video::IImage * image,
core::dimension2d<u32> dim = image->getDimension(); core::dimension2d<u32> dim = image->getDimension();
std::string extensions = (char*) glGetString(GL_EXTENSIONS);
// Only GLES2 is trusted to correctly report npot support // Only GLES2 is trusted to correctly report npot support
if (get_GL_major_version() > 1 && // Note: we cache the boolean result. GL context will never change on Android.
extensions.find("GL_OES_texture_npot") != std::string::npos) { static const bool hasNPotSupport = get_GL_major_version() > 1 &&
glGetString(GL_EXTENSIONS) &&
strstr(glGetString(GL_EXTENSIONS), "GL_OES_texture_npot");
if (hasNPotSupport)
return image; return image;
}
unsigned int height = npot2(dim.Height); unsigned int height = npot2(dim.Height);
unsigned int width = npot2(dim.Width); unsigned int width = npot2(dim.Width);