diff options
| author | Tobin Ehlis <tobin@lunarg.com> | 2014-11-25 12:27:38 -0700 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2014-11-26 10:03:12 -0700 |
| commit | 32ad894f61e2a40596b88f1b01b3e4cecb49740a (patch) | |
| tree | 985bd8580fd70311d09145f77c36c694d4ff36e5 | |
| parent | 20e689009c7995c7588d2463fd31b9630826a1e6 (diff) | |
| download | usermoji-32ad894f61e2a40596b88f1b01b3e4cecb49740a.tar.xz | |
layers: Fix bug in DestroyObject code of MemTracker layer.
| -rw-r--r-- | layers/mem_tracker.c | 13 |
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); |
