Mesa (master): i915g: fix null deref in draw_rect emission

Jakob Bornecrantz wallbraker at kemper.freedesktop.org
Sat Feb 26 14:36:41 UTC 2011


Module: Mesa
Branch: master
Commit: b8e44f648eac07d9a8c113b19a9097626c24a61f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b8e44f648eac07d9a8c113b19a9097626c24a61f

Author: Daniel Vetter <daniel.vetter at ffwll.ch>
Date:   Fri Feb 25 23:32:48 2011 +0100

i915g: fix null deref in draw_rect emission

Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>

---

 src/gallium/drivers/i915/i915_state_emit.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_state_emit.c b/src/gallium/drivers/i915/i915_state_emit.c
index 510fb1c..a9a9d7f 100644
--- a/src/gallium/drivers/i915/i915_state_emit.c
+++ b/src/gallium/drivers/i915/i915_state_emit.c
@@ -413,7 +413,6 @@ i915_emit_hardware_state(struct i915_context *i915 )
    {
       uint w, h;
       struct pipe_surface *cbuf_surface = i915->framebuffer.cbufs[0];
-      struct i915_texture *tex = i915_texture(cbuf_surface->texture);
       unsigned x, y;
       int layer;
       uint32_t draw_offset;
@@ -422,10 +421,15 @@ i915_emit_hardware_state(struct i915_context *i915 )
       ret = framebuffer_size(&i915->framebuffer, &w, &h);
       assert(ret);
 
-      layer = cbuf_surface->u.tex.first_layer;
+      if (cbuf_surface) {
+	 struct i915_texture *tex = i915_texture(cbuf_surface->texture);
+	 layer = cbuf_surface->u.tex.first_layer;
+
+	 x = tex->image_offset[cbuf_surface->u.tex.level][layer].nblocksx;
+	 y = tex->image_offset[cbuf_surface->u.tex.level][layer].nblocksy;
 
-      x = tex->image_offset[cbuf_surface->u.tex.level][layer].nblocksx;
-      y = tex->image_offset[cbuf_surface->u.tex.level][layer].nblocksy;
+      } else
+	 x = y = 0;
 
       draw_offset = x | (y << 16);
 




More information about the mesa-commit mailing list