summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2021-01-02 15:08:44 -0500
committer AJR <ajrhacker@users.noreply.github.com>2021-01-02 15:08:44 -0500
commit78f93a270c2b8d013128a2a346bdf0b8f98700d9 (patch)
tree973ac52008030097a75cf2b6c510a733a2b7ce99
parent1944eded0db72a3bee702f4ec3eb47ece8b70e94 (diff)
palette.cpp: Use std::fill instead of memset for dirty vector; add range check
-rw-r--r--src/lib/util/palette.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/util/palette.cpp b/src/lib/util/palette.cpp
index 59a63b2c8f5..b649b4cf46d 100644
--- a/src/lib/util/palette.cpp
+++ b/src/lib/util/palette.cpp
@@ -77,7 +77,7 @@ void palette_client::dirty_state::resize(uint32_t colors)
// resize to the correct number of dwords and mark all entries dirty
uint32_t dirty_dwords = (colors + 31) / 32;
m_dirty.resize(dirty_dwords);
- memset(&m_dirty[0], 0xff, dirty_dwords*4);
+ std::fill(m_dirty.begin(), m_dirty.end(), ~uint32_t(0));
// mark all entries dirty
m_dirty[dirty_dwords - 1] &= (1 << (colors % 32)) - 1;
@@ -108,7 +108,8 @@ void palette_client::dirty_state::mark_dirty(uint32_t index)
void palette_client::dirty_state::reset()
{
// erase relevant entries in the new live one
- memset(&m_dirty[m_mindirty / 32], 0, ((m_maxdirty / 32) + 1 - (m_mindirty / 32)) * sizeof(uint32_t));
+ if (m_mindirty <= m_maxdirty)
+ std::fill(&m_dirty[m_mindirty / 32], &m_dirty[(m_maxdirty / 32) + 1], 0);
m_mindirty = m_dirty.size() * 32 - 1;
m_maxdirty = 0;
}