diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2016-08-11 10:08:21 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2016-08-11 20:17:43 +0000 |
commit | 71edf63d457de56740578939a62645ffbc71e040 (patch) | |
tree | 74ec5ed7e9dacec605d1dff7c0a122473a26c367 /src/core/resources/qhandlemanager_p.h | |
parent | d6e836de654e6309eaf88d3ba907ab28026ddcb8 (diff) |
HandleManager: do not allow counter to overflow
This could otherwise have happened if an element was acquired and released
repeatedly.
Change-Id: I29a327f32fdd9d9a02460bff26c9ff56fdd3dd61
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/core/resources/qhandlemanager_p.h')
-rw-r--r-- | src/core/resources/qhandlemanager_p.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/core/resources/qhandlemanager_p.h b/src/core/resources/qhandlemanager_p.h index 53439e13c..b41fc75b1 100644 --- a/src/core/resources/qhandlemanager_p.h +++ b/src/core/resources/qhandlemanager_p.h @@ -153,6 +153,9 @@ QHandle<T, INDEXBITS> QHandleManager<T, INDEXBITS>::acquire(T *d) m_firstFreeEntry = m_entries[newIndex].m_nextFreeIndex; m_entries[newIndex].m_nextFreeIndex = 0; ++m_entries[newIndex].m_counter; + // Check if the counter is about to overflow and reset if necessary + if (m_entries[newIndex].m_counter == qHandle::MaxCounter) + m_entries[newIndex].m_counter = 0; if (m_entries[newIndex].m_counter == 0) m_entries[newIndex].m_counter = 1; m_entries[newIndex].m_active = true; |