projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
svga: update constant buffer code for GBS
[mesa.git]
/
src
/
glx
/
indirect_vertex_array.c
diff --git
a/src/glx/indirect_vertex_array.c
b/src/glx/indirect_vertex_array.c
index c723c9eeb73249b2ddea8ac336fad1512a2050a0..0025cbbd078135110c2bf3622f7f0676d4fe77dd 100644
(file)
--- a/
src/glx/indirect_vertex_array.c
+++ b/
src/glx/indirect_vertex_array.c
@@
-135,9
+135,6
@@
__glXFreeVertexArrayState(struct glx_context * gc)
* struct glx_context::server_minor, and __GLXcontext::server_major have been
* initialized. These values are used to determine what vertex arrays are
* supported.
* struct glx_context::server_minor, and __GLXcontext::server_major have been
* initialized. These values are used to determine what vertex arrays are
* supported.
- *
- * \bug
- * Return values from malloc are not properly tested.
*/
void
__glXInitVertexArrayState(struct glx_context * gc)
*/
void
__glXInitVertexArrayState(struct glx_context * gc)
@@
-154,7
+151,11
@@
__glXInitVertexArrayState(struct glx_context * gc)
arrays = calloc(1, sizeof(struct array_state_vector));
arrays = calloc(1, sizeof(struct array_state_vector));
- state->array_state = arrays;
+
+ if (arrays == NULL) {
+ __glXSetError(gc, GL_OUT_OF_MEMORY);
+ return;
+ }
arrays->old_DrawArrays_possible = !state->NoDrawArraysProtocol;
arrays->new_DrawArrays_possible = GL_FALSE;
arrays->old_DrawArrays_possible = !state->NoDrawArraysProtocol;
arrays->new_DrawArrays_possible = GL_FALSE;
@@
-204,6
+205,12
@@
__glXInitVertexArrayState(struct glx_context * gc)
arrays->num_arrays = array_count;
arrays->arrays = calloc(array_count, sizeof(struct array_state));
arrays->num_arrays = array_count;
arrays->arrays = calloc(array_count, sizeof(struct array_state));
+ if (arrays->arrays == NULL) {
+ free(arrays);
+ __glXSetError(gc, GL_OUT_OF_MEMORY);
+ return;
+ }
+
arrays->arrays[0].data_type = GL_FLOAT;
arrays->arrays[0].count = 3;
arrays->arrays[0].key = GL_NORMAL_ARRAY;
arrays->arrays[0].data_type = GL_FLOAT;
arrays->arrays[0].count = 3;
arrays->arrays[0].key = GL_NORMAL_ARRAY;
@@
-289,6
+296,18
@@
__glXInitVertexArrayState(struct glx_context * gc)
arrays->stack = malloc(sizeof(struct array_stack_state)
* arrays->num_arrays
* __GL_CLIENT_ATTRIB_STACK_DEPTH);
arrays->stack = malloc(sizeof(struct array_stack_state)
* arrays->num_arrays
* __GL_CLIENT_ATTRIB_STACK_DEPTH);
+
+ if (arrays->stack == NULL) {
+ free(arrays->arrays);
+ free(arrays);
+ __glXSetError(gc, GL_OUT_OF_MEMORY);
+ return;
+ }
+
+ /* Everything went ok so we put vertex array state in place
+ * in context.
+ */
+ state->array_state = arrays;
}
}
@@
-1056,7
+1075,7
@@
__indirect_glMultiDrawArrays(GLenum mode, const GLint *first,
void
__indirect_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count,
void
__indirect_glMultiDrawElementsEXT(GLenum mode, const GLsizei * count,
- GLenum type, const GLvoid ** indices,
+ GLenum type, const GLvoid *
const
* indices,
GLsizei primcount)
{
struct glx_context *gc = __glXGetCurrentContext();
GLsizei primcount)
{
struct glx_context *gc = __glXGetCurrentContext();