From 04aed2149d95f04602127eef4d5b6d7d48684359 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 17 May 2010 14:45:43 -0700 Subject: [PATCH] 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 --- opengl/libagl/egl.cpp | 9 +++++++-- 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 b6e0aae74e..7cb01d0e1a 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 e6cf792443..ba09d082fe 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 -- 2.11.0