Mesa/u_Fix-crash-in-swrast-when-setting-a-texture-for-a-pix.patch
Stefan Dirsch 2d0b0526f5 Accepting request 114850 from home:klausi123:X11
Updatet to mesa-8.0.2
rebased the needed patches on top of 8.0.2

maybe you want to pull my package "llvm-stable" for now, or revert llvm to 3.0, because llvm 3.0.99 breaks mesa right now

OBS-URL: https://build.opensuse.org/request/show/114850
OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=208
2012-04-20 14:33:41 +00:00

49 lines
1.7 KiB
Diff

From 26de08de6f27a5fe5fc6aaeee0ebedf40626ab04 Mon Sep 17 00:00:00 2001
From: Tobias Johannes Klausmann <tobias.johannes.klausmann@mni.thm.de>
Date: Fri, 20 Apr 2012 11:52:31 +0200
Subject: [PATCH] When glXBindTexImageEXT is called and SWrast is used there
will be a crash when sPriv->swrast_loader->getImage() is
called from swrastSetTexBuffer2(). Reason: no memory has
been allocated for the destination thus texImage->Data is
NULL. Call ctx->Driver.TexImage2D() to initialize this. If
memory has been allocated in a previous call free it first.
Signed-off-by: Egbert Eich <eich@freedesktop.org>
for 8.0.1
Ported to 8.0.2
---
src/mesa/drivers/dri/swrast/swrast.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c
index d18dd09..dd7d0c0 100644
--- a/src/mesa/drivers/dri/swrast/swrast.c
+++ b/src/mesa/drivers/dri/swrast/swrast.c
@@ -63,6 +63,7 @@
static void swrastSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
GLint texture_format, __DRIdrawable *dPriv)
{
+ GET_CURRENT_CONTEXT(ctx);
struct dri_context *dri_ctx;
int x, y, w, h;
__DRIscreen *sPriv = dPriv->driScreenPriv;
@@ -93,6 +94,13 @@ static void swrastSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
_mesa_init_teximage_fields(&dri_ctx->Base, texImage,
w, h, 1, 0, internalFormat, texFormat);
+
+ if (texImage->Data)
+ ctx->Driver.FreeTexImageData(ctx, texImage);
+
+ ctx->Driver.TexImage2D(ctx, target, 0, internalFormat,
+ w, h, 0, texture_format, GL_UNSIGNED_INT_8_8_8_8,
+ NULL, &ctx->Unpack, texObj, texImage);
sPriv->swrast_loader->getImage(dPriv, x, y, w, h, (char *)swImage->Buffer,
dPriv->loaderPrivate);
--
1.7.7