summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/libANGLE/HandleAllocator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/src/libANGLE/HandleAllocator.cpp')
-rwxr-xr-xgfx/angle/src/libANGLE/HandleAllocator.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/gfx/angle/src/libANGLE/HandleAllocator.cpp b/gfx/angle/src/libANGLE/HandleAllocator.cpp
index c090b3dfc..4815855d5 100755
--- a/gfx/angle/src/libANGLE/HandleAllocator.cpp
+++ b/gfx/angle/src/libANGLE/HandleAllocator.cpp
@@ -63,14 +63,11 @@ GLuint HandleAllocator::allocate()
GLuint freeListHandle = listIt->begin;
ASSERT(freeListHandle > 0);
+ listIt->begin++;
if (listIt->begin == listIt->end)
{
mUnallocatedList.erase(listIt);
}
- else
- {
- listIt->begin++;
- }
return freeListHandle;
}
@@ -104,7 +101,7 @@ void HandleAllocator::reserve(GLuint handle)
if (handle == begin || handle == end)
{
- if (begin == end)
+ if (begin + 1 == end)
{
mUnallocatedList.erase(boundIt);
}
@@ -120,12 +117,18 @@ void HandleAllocator::reserve(GLuint handle)
return;
}
- ASSERT(begin < handle && handle < end);
-
// need to split the range
auto placementIt = mUnallocatedList.erase(boundIt);
- placementIt = mUnallocatedList.insert(placementIt, HandleRange(handle + 1, end));
- mUnallocatedList.insert(placementIt, HandleRange(begin, handle - 1));
+
+ if (handle + 1 != end)
+ {
+ placementIt = mUnallocatedList.insert(placementIt, HandleRange(handle + 1, end));
+ }
+ if (begin != handle)
+ {
+ ASSERT(begin < handle);
+ mUnallocatedList.insert(placementIt, HandleRange(begin, handle));
+ }
}
} // namespace gl