Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2013-05-13 15:52:04 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2013-05-13 15:52:04 +0400
commit356d4c3085bcff1664cdf1d57ac325323d66e519 (patch)
treeba40c10cf1d3dbcda366d6f0cdba99032f1aeaa1 /source/blender/compositor/operations/COM_GaussianAlphaYBlurOperation.cpp
parente40d403e43972109a57ff705ff29da60dfa6808d (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.cpp9
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);