From: Paul Berry Date: Tue, 3 Jan 2012 21:59:13 +0000 (-0800) Subject: mesa: Avoid segfault when getting an unbound transform feedback buffer name. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4357f8b4dcaaef4843d4b34923383a2b045638b1;p=mesa.git mesa: Avoid segfault when getting an unbound transform feedback buffer name. Previously we were using gl_transform_feedback_object::Buffers[i]->Name to service an indexed get request for GL_TRANSFORM_FEEDBACK_BUFFER_BINDING. However, if no buffer has been bound, gl_transform_feedback_object::Buffers[i] is NULL, so this was causing a segfault. This patch switches to using gl_transform_feedback_object::BufferNames[i], which is equal to gl_transform_feedback_object::Buffers[i]->Name if gl_transform_feedback_object::Buffers[i] is not NULL, and 0 if it is NULL. Fixes piglit test "EXT_transform_feedback/get-buffer-state indexed_binding". Reviewed-by: Eric Anholt Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 0c9d6b391d4..5ad601242f4 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -2498,7 +2498,7 @@ find_value_indexed(const char *func, GLenum pname, int index, union value *v) goto invalid_value; if (!ctx->Extensions.EXT_transform_feedback) goto invalid_enum; - v->value_int = ctx->TransformFeedback.CurrentObject->Buffers[index]->Name; + v->value_int = ctx->TransformFeedback.CurrentObject->BufferNames[index]; return TYPE_INT; }