diff options
-rw-r--r-- | src/egl/main/eglarray.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/src/egl/main/eglarray.c b/src/egl/main/eglarray.c index d2f39af49a6..ba6cb3e6a4e 100644 --- a/src/egl/main/eglarray.c +++ b/src/egl/main/eglarray.c @@ -26,6 +26,7 @@ **************************************************************************/ +#include <assert.h> #include <stdlib.h> #include <string.h> @@ -157,25 +158,15 @@ _eglFilterArray(_EGLArray *array, void **data, EGLint size, if (!array) return 0; - if (filter) { - for (i = 0; i < array->Size; i++) { - if (filter(array->Elements[i], filter_data)) { - if (data && count < size) - data[count] = array->Elements[i]; - count++; - } - if (data && count >= size) - break; - } - } - else { - if (data) { - count = (size < array->Size) ? size : array->Size; - memcpy(data, array->Elements, count * sizeof(array->Elements[0])); - } - else { - count = array->Size; + assert(filter); + for (i = 0; i < array->Size; i++) { + if (filter(array->Elements[i], filter_data)) { + if (data && count < size) + data[count] = array->Elements[i]; + count++; } + if (data && count >= size) + break; } return count; |