From: Egbert Eich <e...@freedesktop.org> 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.
Fixes: https://bugzilla.novell.com/show_bug.cgi?id=641297 Signed-off-by: Egbert Eich <e...@freedesktop.org> Adapted-by: Stefan Dirsch <sndir...@suse.com> Adapted-by: Tobias Johannes Klausmann <tobias.johannes.klausm...@mni.thm.de> --- I am not sure whether this patch from Q3/2010 is required these days. But openSUSE still applies it ... If "yes" it should also land in 9.2, 9.1, 9.0 and 8.0 branches. --- src/mesa/drivers/dri/swrast/swrast.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index 332c7b7..b1c67a9 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -67,6 +67,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; @@ -98,6 +99,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.8.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev