From 56b870e44106188f425df6eb45b7a394f0420e5e Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 23 Nov 2011 15:33:46 -0700 Subject: [PATCH] mesa: check for null ptr in _mesa_is_bufferobj() This simplifies a few callers. And it adds a bit of robustness. Reviewed-by: Kenneth Graunke Reviewed-by: Yuanhan Liu --- src/mesa/main/bufferobj.c | 6 +++--- src/mesa/main/bufferobj.h | 2 +- src/mesa/state_tracker/st_draw.c | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 4c77397d9dc..8e8fcd59548 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -1286,14 +1286,14 @@ _mesa_CopyBufferSubData(GLenum readTarget, GLenum writeTarget, ASSERT_OUTSIDE_BEGIN_END(ctx); src = get_buffer(ctx, readTarget); - if (!src || !_mesa_is_bufferobj(src)) { + if (!_mesa_is_bufferobj(src)) { _mesa_error(ctx, GL_INVALID_ENUM, "glCopyBuffserSubData(readTarget = 0x%x)", readTarget); return; } dst = get_buffer(ctx, writeTarget); - if (!dst || !_mesa_is_bufferobj(dst)) { + if (!_mesa_is_bufferobj(dst)) { _mesa_error(ctx, GL_INVALID_ENUM, "glCopyBuffserSubData(writeTarget = 0x%x)", writeTarget); return; @@ -1421,7 +1421,7 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, } bufObj = get_buffer(ctx, target); - if (!bufObj || !_mesa_is_bufferobj(bufObj)) { + if (!_mesa_is_bufferobj(bufObj)) { _mesa_error(ctx, GL_INVALID_ENUM, "glMapBufferRange(target = 0x%x)", target); return NULL; diff --git a/src/mesa/main/bufferobj.h b/src/mesa/main/bufferobj.h index b4e70f2f08a..c0d5a641a46 100644 --- a/src/mesa/main/bufferobj.h +++ b/src/mesa/main/bufferobj.h @@ -53,7 +53,7 @@ _mesa_bufferobj_mapped(const struct gl_buffer_object *obj) static inline GLboolean _mesa_is_bufferobj(const struct gl_buffer_object *obj) { - return obj->Name != 0; + return obj != NULL && obj->Name != 0; } diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 05a71d35c23..fd1c8ee4879 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -325,7 +325,7 @@ is_interleaved_arrays(const struct st_vertex_program *vp, if (abs(array->Ptr - firstPtr) > firstStride) return GL_FALSE; /* arrays start too far apart */ - if ((!bufObj || !_mesa_is_bufferobj(bufObj)) != userSpaceBuffer) + if ((!_mesa_is_bufferobj(bufObj)) != userSpaceBuffer) return GL_FALSE; /* mix of VBO and user-space arrays */ } } @@ -390,7 +390,7 @@ setup_interleaved_attribs(struct gl_context *ctx, } /* are the arrays in user space? */ - usingVBO = bufobj && _mesa_is_bufferobj(bufobj); + usingVBO = _mesa_is_bufferobj(bufobj); for (attr = 0; attr < vpv->num_inputs; attr++) { const GLuint mesaAttr = vp->index_to_input[attr]; @@ -497,7 +497,7 @@ setup_non_interleaved_attribs(struct gl_context *ctx, assert(element_size == array->Size * _mesa_sizeof_type(array->Type)); - if (bufobj && _mesa_is_bufferobj(bufobj)) { + if (_mesa_is_bufferobj(bufobj)) { /* Attribute data is in a VBO. * Recall that for VBOs, the gl_client_array->Ptr field is * really an offset from the start of the VBO, not a pointer. @@ -599,7 +599,7 @@ setup_index_buffer(struct gl_context *ctx, } /* get/create the index buffer object */ - if (bufobj && _mesa_is_bufferobj(bufobj)) { + if (_mesa_is_bufferobj(bufobj)) { /* elements/indexes are in a real VBO */ struct st_buffer_object *stobj = st_buffer_object(bufobj); pipe_resource_reference(&ibuffer->buffer, stobj->buffer); @@ -775,7 +775,7 @@ handle_fallback_primitive_restart(struct pipe_context *pipe, info.primitive_restart = FALSE; info.instance_count = 1; - if (ib->obj && _mesa_is_bufferobj(ib->obj)) { + if (_mesa_is_bufferobj(ib->obj)) { ptr = pipe_buffer_map_range(pipe, ibuffer->buffer, start * ibuffer->index_size, /* start */ count * ibuffer->index_size, /* length */ -- 2.30.2