summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHong Liu <hong.liu@intel.com>2008-02-05 09:06:14 +0800
committerJesse Barnes <jbarnes@hobbes.virtuousgeek.org>2008-02-05 11:06:45 -0800
commita70b59bd44d14e77c9e522dbe225b62a8bcf3050 (patch)
treefd996a35fce36717b9e04bd631cf984a41254782
parentfa841fd05bdebb991f4e4db201e6a260557e2dad (diff)
downloadxorg-driver-xf86-video-intel-a70b59bd44d14e77c9e522dbe225b62a8bcf3050.tar.gz
Allow non-strict free order for bo_list
-rw-r--r--src/i830_memory.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/i830_memory.c b/src/i830_memory.c
index eed2eca2..96c8bc01 100644
--- a/src/i830_memory.c
+++ b/src/i830_memory.c
@@ -274,12 +274,16 @@ i830_free_memory(ScrnInfoPtr pScrn, i830_memory *mem)
I830Ptr pI830 = I830PTR(pScrn);
drmBOUnreference(pI830->drmSubFD, &mem->bo);
- if (pI830->bo_list == mem)
+ if (pI830->bo_list == mem) {
pI830->bo_list = mem->next;
- if (mem->next)
- mem->next->prev = NULL;
- if (mem->prev)
- mem->prev->next = NULL;
+ if (mem->next)
+ mem->next->prev = NULL;
+ } else {
+ if (mem->prev)
+ mem->prev->next = mem->next;
+ if (mem->next)
+ mem->next->prev = mem->prev;
+ }
xfree(mem->name);
xfree(mem);
return;