diff options
author | Mathias Agopian <mathias@google.com> | 2010-05-17 14:45:43 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2010-05-17 14:45:43 -0700 |
commit | 04aed2149d95f04602127eef4d5b6d7d48684359 (patch) | |
tree | 169c385102a2dfa99ff2a619b651c2b7582cabe4 /opengl | |
parent | 4edfe7501873df28554b675694b336579c078dfa (diff) | |
download | frameworks_native-04aed2149d95f04602127eef4d5b6d7d48684359.zip frameworks_native-04aed2149d95f04602127eef4d5b6d7d48684359.tar.gz frameworks_native-04aed2149d95f04602127eef4d5b6d7d48684359.tar.bz2 |
fix a crasher in our EGL wrapper when attrib_list is NULL in eglChooseConfig
the EGL specification states that this should be treated as though it was
an empty list terminated with EGL_NONE.
Change-Id: I294104370a86b5e5c34c7bcf15c5459eab464631
Diffstat (limited to 'opengl')
-rw-r--r-- | opengl/libagl/egl.cpp | 9 | ||||
-rw-r--r-- | opengl/libs/EGL/egl.cpp | 10 |
2 files changed, 13 insertions, 6 deletions
diff --git a/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp index b6e0aae..7cb01d0 100644 --- a/opengl/libagl/egl.cpp +++ b/opengl/libagl/egl.cpp @@ -1525,8 +1525,13 @@ EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list, } if (ggl_unlikely(attrib_list==0)) { - *num_config = 0; - return EGL_TRUE; + /* + * A NULL attrib_list should be treated as though it was an empty + * one (terminated with EGL_NONE) as defined in + * section 3.4.1 "Querying Configurations" in the EGL specification. + */ + static const EGLint dummy = EGL_NONE; + attrib_list = &dummy; } int numAttributes = 0; diff --git a/opengl/libs/EGL/egl.cpp b/opengl/libs/EGL/egl.cpp index e6cf792..ba09d08 100644 --- a/opengl/libs/EGL/egl.cpp +++ b/opengl/libs/EGL/egl.cpp @@ -843,10 +843,12 @@ EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list, EGLint patch_index = -1; GLint attr; size_t size = 0; - while ((attr=attrib_list[size]) != EGL_NONE) { - if (attr == EGL_CONFIG_ID) - patch_index = size; - size += 2; + if (attrib_list) { + while ((attr=attrib_list[size]) != EGL_NONE) { + if (attr == EGL_CONFIG_ID) + patch_index = size; + size += 2; + } } if (patch_index >= 0) { size += 2; // we need copy the sentinel as well |