egl: Return the correct array size in _eglFlattenArray.
authorChia-I Wu <olv@lunarg.com>
Wed, 14 Jul 2010 16:31:39 +0000 (00:31 +0800)
committerChia-I Wu <olv@lunarg.com>
Thu, 15 Jul 2010 02:05:46 +0000 (10:05 +0800)
The function is used by _eglGetConfigs and _eglGetScreens.  The array
size should not be limited by the buffer size when the buffer is NULL.

This fixes fdo bug #29052.

src/egl/main/eglarray.c

index 781d07fc1ce76cffa95f1bdf6f4521751f4d1e9d..d686fa162d5ecdbc3766bd176aea17f47efe4ca4 100644 (file)
@@ -166,8 +166,11 @@ _eglFlattenArray(_EGLArray *array, void *buffer, EGLint elem_size, EGLint size,
    if (!array)
       return 0;
 
-   count = (size < array->Size) ? size : array->Size;
+   count = array->Size;
    if (buffer) {
+      /* do not exceed buffer size */
+      if (count > size)
+         count = size;
       for (i = 0; i < count; i++)
          flatten(array->Elements[i],
                (void *) ((char *) buffer + elem_size * i));