aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2014-11-25 12:27:38 -0700
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2014-11-26 10:03:12 -0700
commit32ad894f61e2a40596b88f1b01b3e4cecb49740a (patch)
tree985bd8580fd70311d09145f77c36c694d4ff36e5
parent20e689009c7995c7588d2463fd31b9630826a1e6 (diff)
downloadusermoji-32ad894f61e2a40596b88f1b01b3e4cecb49740a.tar.xz
layers: Fix bug in DestroyObject code of MemTracker layer.
-rw-r--r--layers/mem_tracker.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/layers/mem_tracker.c b/layers/mem_tracker.c
index 9cf7e93e..e4ebaae8 100644
--- a/layers/mem_tracker.c
+++ b/layers/mem_tracker.c
@@ -1280,7 +1280,15 @@ XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglOpenPeerImage(XGL_DEVICE device, const XGL
XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglDestroyObject(XGL_OBJECT object)
{
// TODO : Verify that no memory is bound to this object at time of destruction
- GLOBAL_OBJECT_NODE* pTrav = getGlobalObjectNode(object);
+ GLOBAL_OBJECT_NODE* pTrav = pGlobalObjectHead;
+ GLOBAL_OBJECT_NODE* pPrev = pTrav;
+ // First locate node in global list along with prev node
+ while (pTrav) {
+ if (object == pTrav->object)
+ break;
+ pPrev = pTrav;
+ pTrav = pTrav->pNext;
+ }
if (pTrav) {
if (pTrav->pMemNode) {
char str[1024];
@@ -1291,7 +1299,8 @@ XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglDestroyObject(XGL_OBJECT object)
}
if (pGlobalObjectHead == pTrav) // update HEAD if needed
pGlobalObjectHead = pTrav->pNext;
- // Delete the obj node
+ // Delete the obj node from global list
+ pPrev->pNext = pTrav->pNext;
free(pTrav);
}
XGL_RESULT result = nextTable.DestroyObject(object);