Skip to content
Permalink
Browse files

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)
  • Loading branch information...
nerzhul committed Jan 7, 2019
1 parent 07c1c72 commit 95d4ff6d1b62945decc85003a99588bb0539c45b
Showing with 6 additions and 5 deletions.
  1. +6 −5 src/client/tile.cpp
@@ -1012,13 +1012,14 @@ video::IImage * Align2Npot2(video::IImage * image,

core::dimension2d<u32> dim = image->getDimension();

std::string extensions = (char*) glGetString(GL_EXTENSIONS);

// Only GLES2 is trusted to correctly report npot support
if (get_GL_major_version() > 1 &&
extensions.find("GL_OES_texture_npot") != std::string::npos) {
// Note: we cache the boolean result. GL context will never change on Android.
static const bool hasNPotSupport = get_GL_major_version() > 1 &&
glGetString(GL_EXTENSIONS) &&
strstr(glGetString(GL_EXTENSIONS), "GL_OES_texture_npot");

if (hasNPotSupport)
return image;
}

unsigned int height = npot2(dim.Height);
unsigned int width = npot2(dim.Width);

0 comments on commit 95d4ff6

Please sign in to comment.
You can’t perform that action at this time.