OSDN Git Service

assertions
authorBrian <brian.paul@tungstengraphics.com>
Fri, 17 Aug 2007 09:27:53 +0000 (10:27 +0100)
committerBrian <brian.paul@tungstengraphics.com>
Fri, 17 Aug 2007 09:27:53 +0000 (10:27 +0100)
src/mesa/pipe/softpipe/sp_clear.c
src/mesa/pipe/softpipe/sp_region.c

index 6e5e510..caa6ac1 100644 (file)
@@ -55,5 +55,8 @@ softpipe_clear(struct pipe_context *pipe, struct pipe_surface *ps,
    w = softpipe->framebuffer.cbufs[0]->width;
    h = softpipe->framebuffer.cbufs[0]->height;
 
+   assert(w <= ps->region->pitch);
+   assert(h <= ps->region->height);
+
    pipe->region_fill(pipe, ps->region, 0, x, y, w, h, clearValue);
 }
index 231ea1e..25d0a41 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "sp_context.h"
 #include "sp_region.h"
+#include "pipe/p_util.h"
 #include "pipe/p_winsys.h"
 #include "pipe/p_defines.h"
 
@@ -86,7 +87,7 @@ sp_region_alloc(struct pipe_context *pipe,
                unsigned cpp, unsigned width, unsigned height, unsigned flags)
 {
    struct softpipe_context *sp = softpipe_context( pipe );
-   struct pipe_region *region = calloc(sizeof(*region), 1);
+   struct pipe_region *region = CALLOC_STRUCT(pipe_region);
    const unsigned alignment = 64;
 
    region->cpp = cpp;
@@ -94,6 +95,8 @@ sp_region_alloc(struct pipe_context *pipe,
    region->height = height;
    region->refcount = 1;
 
+   assert(region->pitch > 0);
+
    region->buffer = sp->pipe.winsys->buffer_create( sp->pipe.winsys, alignment );
 
    /* NULL data --> just allocate the space */
@@ -233,6 +236,9 @@ sp_region_fill(struct pipe_context *pipe,
 {
    unsigned i, j;
 
+   assert(dst->pitch > 0);
+   assert(width <= dst->pitch);
+
    (void)pipe->region_map(pipe, dst);
 
    switch (dst->cpp) {