SDL_EGL_ChooseConfig: cleanups and minor optimizations. - Move an immutable condition out of a for loop. - Add a break statement to that loop when we find what we're looking for. - Add an assert to make sure we don't overflow a buffer. - Wrap a single-statement if block in braces. - Adjust some whitespace.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c
index 079daef..3716da7 100644
--- a/src/video/SDL_egl.c
+++ b/src/video/SDL_egl.c
@@ -692,9 +692,9 @@ static void dumpconfig(_THIS, EGLConfig config)
#endif /* DUMP_EGL_CONFIG */
int
-SDL_EGL_ChooseConfig(_THIS)
+SDL_EGL_ChooseConfig(_THIS)
{
-/* 64 seems nice. */
+ /* 64 seems nice. */
EGLint attribs[64];
EGLint found_configs = 0, value;
/* 128 seems even nicer here */
@@ -706,7 +706,7 @@ SDL_EGL_ChooseConfig(_THIS)
/* The EGL library wasn't loaded, SDL_GetError() should have info */
return -1;
}
-
+
/* Get a valid EGL configuration */
i = 0;
attribs[i++] = EGL_RED_SIZE;
@@ -775,6 +775,8 @@ SDL_EGL_ChooseConfig(_THIS)
attribs[i++] = EGL_NONE;
+ SDL_assert(i < SDL_arraysize(attribs));
+
if (_this->egl_data->eglChooseConfig(_this->egl_data->egl_display,
attribs,
configs, SDL_arraysize(configs),
@@ -784,15 +786,17 @@ SDL_EGL_ChooseConfig(_THIS)
}
/* first ensure that a found config has a matching format, or the function will fall through. */
- for (i = 0; i < found_configs; i++ ) {
- if (_this->egl_data->egl_required_visual_id)
- {
+ if (_this->egl_data->egl_required_visual_id)
+ {
+ for (i = 0; i < found_configs; i++ ) {
EGLint format;
_this->egl_data->eglGetConfigAttrib(_this->egl_data->egl_display,
configs[i],
EGL_NATIVE_VISUAL_ID, &format);
- if (_this->egl_data->egl_required_visual_id == format)
+ if (_this->egl_data->egl_required_visual_id == format) {
has_matching_format = SDL_TRUE;
+ break;
+ }
}
}