diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-05-13 15:52:04 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-05-13 15:52:04 +0400 |
commit | 356d4c3085bcff1664cdf1d57ac325323d66e519 (patch) | |
tree | ba40c10cf1d3dbcda366d6f0cdba99032f1aeaa1 /source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp | |
parent | e40d403e43972109a57ff705ff29da60dfa6808d (diff) |
Fix #35330: Blur node crash due to size overflow
Issue was caused by too hight value used for size,
which came from infinite Z-buffer point.
Solved the crash by clamoing maximal gaussian table
radius to 30K, which seems to be reasonable.
Diffstat (limited to 'source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp')
-rw-r--r-- | source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp b/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp index 650805f91d5..4aee878a8c8 100644 --- a/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp +++ b/source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp @@ -55,8 +55,7 @@ void GaussianAlphaYBlurOperation::initExecution() if (this->m_sizeavailable) { float rad = this->m_size * this->m_data->sizey; - if (rad < 1) - rad = 1; + CLAMP(rad, 1.0f, MAX_GAUSSTAB_RADIUS); this->m_rad = rad; this->m_gausstab = BlurBaseOperation::make_gausstab(rad); @@ -69,8 +68,7 @@ void GaussianAlphaYBlurOperation::updateGauss() if (this->m_gausstab == NULL) { updateSize(); float rad = this->m_size * this->m_data->sizey; - if (rad < 1) - rad = 1; + CLAMP(rad, 1.0f, MAX_GAUSSTAB_RADIUS); this->m_rad = rad; this->m_gausstab = BlurBaseOperation::make_gausstab(rad); @@ -79,8 +77,7 @@ void GaussianAlphaYBlurOperation::updateGauss() if (this->m_distbuf_inv == NULL) { updateSize(); float rad = this->m_size * this->m_data->sizex; - if (rad < 1) - rad = 1; + CLAMP(rad, 1.0f, MAX_GAUSSTAB_RADIUS); this->m_rad = rad; this->m_distbuf_inv = BlurBaseOperation::make_dist_fac_inverse(rad, this->m_falloff); |