From e2fc6f87bea38ff3e4e6bd20ffe838b09b9f4411 Mon Sep 17 00:00:00 2001 From: Michael Lentine Date: Tue, 28 Jul 2015 16:30:10 -0700 Subject: [PATCH] Fix parsing of extension string Previously the parsing found the next space and then added the the difference between the current position and space to the set of tokens. This improperly generated empty strings if there were consecutive spaces or if spaces existed at the beginning or end of strings. To fix this, the parse is modified to use simple stringstream parsing. Bug: 22709246 Change-Id: I9e32c07bbf984eadccdadf1dc34437fa0c46088b --- opengl/libs/EGL/egl_object.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/opengl/libs/EGL/egl_object.cpp b/opengl/libs/EGL/egl_object.cpp index d511940e3..918faa80a 100644 --- a/opengl/libs/EGL/egl_object.cpp +++ b/opengl/libs/EGL/egl_object.cpp @@ -14,6 +14,9 @@ ** limitations under the License. */ +#include +#include + #include #include #include @@ -115,15 +118,11 @@ void egl_context_t::onMakeCurrent(EGLSurface draw, EGLSurface read) { } // tokenize the supported extensions for the glGetStringi() wrapper - exts = gl_extensions.string(); - while (1) { - const char *end = strchr(exts, ' '); - if (end == NULL) { - tokenized_gl_extensions.push(String8(exts)); - break; - } - tokenized_gl_extensions.push(String8(exts, end - exts)); - exts = end + 1; + std::stringstream ss; + std::string str; + ss << gl_extensions.string(); + while (ss >> str) { + tokenized_gl_extensions.push(String8(str.c_str())); } } }