pipebuffer: More robust face null pointers.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Thu, 22 May 2008 12:54:41 +0000 (21:54 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Thu, 22 May 2008 12:54:41 +0000 (21:54 +0900)
It is really the caller responsibility not to call pipebuffer with null
buffers, etc. But don't let the crash happen here, and still asserting
early.

src/gallium/auxiliary/pipebuffer/pb_buffer.h

index 49705cb862733b30a953b6d77cf7c3dec8fe2bdb..857ea53c7865778526ac92e11576777d9cbdc670 100644 (file)
@@ -146,6 +146,8 @@ pb_map(struct pb_buffer *buf,
        unsigned flags)
 {
    assert(buf);
+   if(!buf)
+      return NULL;
    return buf->vtbl->map(buf, flags);
 }
 
@@ -154,6 +156,8 @@ static INLINE void
 pb_unmap(struct pb_buffer *buf)
 {
    assert(buf);
+   if(!buf)
+      return;
    buf->vtbl->unmap(buf);
 }
 
@@ -163,6 +167,12 @@ pb_get_base_buffer( struct pb_buffer *buf,
                    struct pb_buffer **base_buf,
                    unsigned *offset )
 {
+   assert(buf);
+   if(!buf) {
+      base_buf = NULL;
+      offset = 0;
+      return;
+   }
    buf->vtbl->get_base_buffer(buf, base_buf, offset);
 }
 
@@ -171,7 +181,8 @@ static INLINE void
 pb_destroy(struct pb_buffer *buf)
 {
    assert(buf);
-   assert(buf->vtbl);
+   if(!buf)
+      return;
    buf->vtbl->destroy(buf);
 }