From c10db52fcdaf1e21699fa681b701f224b1410990 Mon Sep 17 00:00:00 2001 From: Younes Manton Date: Thu, 11 Dec 2008 23:04:51 -0500 Subject: g3dvl: Fix some memory leaks. --- src/driclient/src/driclient.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/driclient') diff --git a/src/driclient/src/driclient.c b/src/driclient/src/driclient.c index 2d7514166f..dc2189afec 100644 --- a/src/driclient/src/driclient.c +++ b/src/driclient/src/driclient.c @@ -111,8 +111,23 @@ free_screen: int driDestroyScreen(dri_screen_t *dri_screen) { + Drawable draw; + dri_drawable_t *dri_draw; + assert(dri_screen); + if (drmHashFirst(dri_screen->drawable_hash, &draw, (void**)&dri_draw)) + { + dri_draw->refcount = 1; + driDestroyDrawable(dri_draw); + + while (drmHashNext(dri_screen->drawable_hash, &draw, (void**)&dri_draw)) + { + dri_draw->refcount = 1; + driDestroyDrawable(dri_draw); + } + } + drmHashDestroy(dri_screen->drawable_hash); drmUnmap(dri_screen->sarea, SAREA_MAX); drmCloseOnce(dri_screen->fd); -- cgit v1.2.3