diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-05-26 11:13:44 -0400 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-05-26 11:13:44 -0400 |
commit | 17417fc8eeaf5f88452fa3d37a763cee3c92a28c (patch) | |
tree | 190b00c5bd7dec72c24c71a8bebfaa7430d5db2f | |
parent | 4a28974cf59e12f1296526802a4ed3e7160671e4 (diff) |
fix segfault when running glxinfo
-rw-r--r-- | src/mesa/drivers/dri/r600/r600_context.c | 5 | ||||
-rw-r--r-- | src/mesa/drivers/dri/r600/r600_emit.c | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_common_context.c | 5 |
3 files changed, 11 insertions, 5 deletions
diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index e6c03ecfd5..5be486b176 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -453,9 +453,10 @@ void r600DestroyContext (__DRIcontextPrivate * driContextPriv) { GET_CURRENT_CONTEXT (ctx); - context_t *context = R700_CONTEXT(ctx); + context_t *context = ctx ? R700_CONTEXT(ctx) : NULL; - (context->chipobj.DestroyChipObj)(context->chipobj.pvChipObj); + if (context) + (context->chipobj.DestroyChipObj)(context->chipobj.pvChipObj); } diff --git a/src/mesa/drivers/dri/r600/r600_emit.c b/src/mesa/drivers/dri/r600/r600_emit.c index dee4cd3435..e4ba656ee8 100644 --- a/src/mesa/drivers/dri/r600/r600_emit.c +++ b/src/mesa/drivers/dri/r600/r600_emit.c @@ -234,8 +234,10 @@ GLboolean r600DeleteShader(GLcontext * ctx, { struct radeon_bo * pbo = (struct radeon_bo *)shaderbo; - radeon_bo_unmap(pbo); - radeon_bo_unref(pbo); /* when bo->cref <= 0, bo will be bo_free */ + if (pbo) { + radeon_bo_unmap(pbo); + radeon_bo_unref(pbo); /* when bo->cref <= 0, bo will be bo_free */ + } return GL_TRUE; } diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index 409825182e..1e900865f0 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -233,7 +233,7 @@ void radeonDestroyContext(__DRIcontextPrivate *driContextPriv ) #if RADEON_COMMON && defined(RADEON_COMMON_FOR_R600) /* +r6/r7 */ if (IS_R600_CLASS(screen)) { - r600DestroyContext(driContextPriv); + r600DestroyContext(driContextPriv); } #endif @@ -267,6 +267,9 @@ void radeonDestroyContext(__DRIcontextPrivate *driContextPriv ) rcommonDestroyCmdBuf(radeon); +#if RADEON_COMMON && defined(RADEON_COMMON_FOR_R600) /* +r6/r7 */ + if (!IS_R600_CLASS(screen)) +#endif radeon_destroy_atom_list(radeon); if (radeon->state.scissor.pClipRects) { |