r300g: refuse to create a texture with size 0
authorMarek Olšák <maraeo@gmail.com>
Mon, 3 May 2010 17:14:31 +0000 (19:14 +0200)
committerMarek Olšák <maraeo@gmail.com>
Mon, 3 May 2010 18:39:40 +0000 (20:39 +0200)
src/gallium/drivers/r300/r300_texture.c

index 3e3cf33bde2524fa547a0b21849f627147cfc3f3..506fb7336773fc7af79639d8c2c66588f435c63a 100644 (file)
@@ -924,6 +924,17 @@ struct pipe_resource* r300_texture_create(struct pipe_screen* screen,
         return NULL;
     }
 
+    /* Refuse to create a texture with size 0. */
+    if (!base->width0 ||
+        (!base->height0 && (base->target == PIPE_TEXTURE_2D ||
+                            base->target == PIPE_TEXTURE_CUBE)) ||
+        (!base->depth0 && base->target == PIPE_TEXTURE_3D)) {
+        fprintf(stderr, "r300: texture_create: "
+                "Got invalid texture dimensions: %ix%ix%i\n",
+                base->width0, base->height0, base->depth0);
+        return NULL;
+    }
+
     tex->b.b = *base;
     tex->b.vtbl = &r300_texture_vtbl;
     pipe_reference_init(&tex->b.b.reference, 1);