From 264aa8c454f40590c54c34ddfad330b09b4b1c35 Mon Sep 17 00:00:00 2001 From: Person Date: Tue, 19 Jun 2018 19:32:20 -0700 Subject: [PATCH] --Bug fixes -Fix out of bounds crash in EmberGenome. --- Source/Ember/SheepTools.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Source/Ember/SheepTools.h b/Source/Ember/SheepTools.h index 6b06126..856631d 100644 --- a/Source/Ember/SheepTools.h +++ b/Source/Ember/SheepTools.h @@ -846,8 +846,8 @@ public: //Scale the image so that the total number of pixels is ~10,000. pixTotal = ember.m_FinalRasW * ember.m_FinalRasH; scalar = std::sqrt(T(10000) / pixTotal); - adjustedEmber.m_FinalRasW = static_cast(ember.m_FinalRasW * scalar); - adjustedEmber.m_FinalRasH = static_cast(ember.m_FinalRasH * scalar); + adjustedEmber.m_FinalRasW = static_cast(std::ceil(ember.m_FinalRasW * scalar)); + adjustedEmber.m_FinalRasH = static_cast(std::ceil(ember.m_FinalRasH * scalar)); adjustedEmber.m_PixelsPerUnit *= scalar; adjustedEmber.m_TemporalSamples = 1; m_Renderer->SetEmber(adjustedEmber); @@ -859,14 +859,15 @@ public: return -1; } - m_Hist.resize(res3); + m_Hist.resize(res + res + (res * res) + (res * res * res));//Add one extra res just to be safe. Memset(m_Hist); - auto p = m_FinalImage.data(); - for (i = 0; i < m_Renderer->FinalDimensions(); i++) + for (i = 0; i < m_FinalImage.size(); i++) { - m_Hist[size_t((p->r * res) + (p->g * res) * res + (p->b * res) * res * res)]++;//A specific histogram index representing the sum of R,G,B values. - p++; + auto& p = m_FinalImage[i]; + m_Hist[size_t((p.r * res) + + (p.g * res) * res + + (p.b * res) * res * res)]++;//A specific histogram index representing the sum of R,G,B values. } for (i = 0; i < res3; i++)