Fix returning EGL_BAD_ATTRIBUTE on unknown EGL config attributes.
Bug 23017372
Change-Id: Ie29ca3f67c79b0cb707dda216c256723d3721f28
Reviewed-on: https://swiftshader-review.googlesource.com/3861
Reviewed-by: Ping-Hao Wu <pinghao@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libEGL/Config.cpp b/src/OpenGL/libEGL/Config.cpp
index acabdce..31e98ad 100644
--- a/src/OpenGL/libEGL/Config.cpp
+++ b/src/OpenGL/libEGL/Config.cpp
@@ -355,8 +355,8 @@
case EGL_RECORDABLE_ANDROID: match = true; /* UNIMPLEMENTED(); EGL_ANDROID_recordable */ break;
case EGL_FRAMEBUFFER_TARGET_ANDROID: match = true; /* UNIMPLEMENTED(); EGL_ANDROID_framebuffer_target */ break;
default:
- UNIMPLEMENTED();
- match = false;
+ *numConfig = 0;
+ return false;
}
if(!match)
diff --git a/src/OpenGL/libEGL/libEGL.cpp b/src/OpenGL/libEGL/libEGL.cpp
index 2953d25..6363738 100644
--- a/src/OpenGL/libEGL/libEGL.cpp
+++ b/src/OpenGL/libEGL/libEGL.cpp
@@ -240,7 +240,10 @@
attrib_list = attribList;
}
- display->getConfigs(configs, attrib_list, config_size, num_config);
+ if(!display->getConfigs(configs, attrib_list, config_size, num_config))
+ {
+ return error(EGL_BAD_ATTRIBUTE, EGL_FALSE);
+ }
return success(EGL_TRUE);
}