Fix T84512: Crash if size input of Blur node is too large
Gaussian filter with a too large kernel doesn't make much sense. This commit caps the Gaussian function radius to MAX_GAUSSTAB_RADIUS. Reviewed By: sergey Maniphest Tasks: T84512 Differential Revision: https://developer.blender.org/D10122
This commit is contained in:
@@ -68,6 +68,7 @@ void GaussianAlphaXBlurOperation::updateGauss()
|
||||
if (this->m_distbuf_inv == nullptr) {
|
||||
updateSize();
|
||||
float rad = max_ff(m_size * m_data.sizex, 0.0f);
|
||||
rad = min_ff(rad, MAX_GAUSSTAB_RADIUS);
|
||||
m_filtersize = min_ii(ceil(rad), MAX_GAUSSTAB_RADIUS);
|
||||
|
||||
m_distbuf_inv = BlurBaseOperation::make_dist_fac_inverse(rad, m_filtersize, m_falloff);
|
||||
|
||||
@@ -60,6 +60,7 @@ void GaussianAlphaYBlurOperation::updateGauss()
|
||||
if (this->m_gausstab == nullptr) {
|
||||
updateSize();
|
||||
float rad = max_ff(m_size * m_data.sizey, 0.0f);
|
||||
rad = min_ff(rad, MAX_GAUSSTAB_RADIUS);
|
||||
m_filtersize = min_ii(ceil(rad), MAX_GAUSSTAB_RADIUS);
|
||||
|
||||
m_gausstab = BlurBaseOperation::make_gausstab(rad, m_filtersize);
|
||||
|
||||
@@ -66,6 +66,7 @@ void GaussianXBlurOperation::updateGauss()
|
||||
if (this->m_gausstab == nullptr) {
|
||||
updateSize();
|
||||
float rad = max_ff(m_size * m_data.sizex, 0.0f);
|
||||
rad = min_ff(rad, MAX_GAUSSTAB_RADIUS);
|
||||
m_filtersize = min_ii(ceil(rad), MAX_GAUSSTAB_RADIUS);
|
||||
|
||||
this->m_gausstab = BlurBaseOperation::make_gausstab(rad, m_filtersize);
|
||||
|
||||
@@ -65,6 +65,7 @@ void GaussianYBlurOperation::updateGauss()
|
||||
if (this->m_gausstab == nullptr) {
|
||||
updateSize();
|
||||
float rad = max_ff(m_size * m_data.sizey, 0.0f);
|
||||
rad = min_ff(rad, MAX_GAUSSTAB_RADIUS);
|
||||
m_filtersize = min_ii(ceil(rad), MAX_GAUSSTAB_RADIUS);
|
||||
|
||||
this->m_gausstab = BlurBaseOperation::make_gausstab(rad, m_filtersize);
|
||||
|
||||
Reference in New Issue
Block a user