Fix T40459: Gauss table can be NULL when ending the blur node operation,

which must not be passed to MEM_freeN.
This commit is contained in:
Lukas Tönne 2014-06-01 16:30:58 +02:00
parent 7674ebf340
commit 27630f41a7
Notes: blender-bot 2023-02-14 10:33:05 +01:00
Referenced by issue #40459, Blender Crash after File Open
5 changed files with 27 additions and 10 deletions

View File

@ -146,10 +146,16 @@ void GaussianAlphaXBlurOperation::executePixel(float output[4], int x, int y, vo
void GaussianAlphaXBlurOperation::deinitExecution()
{
BlurBaseOperation::deinitExecution();
MEM_freeN(this->m_gausstab);
this->m_gausstab = NULL;
MEM_freeN(this->m_distbuf_inv);
this->m_distbuf_inv = NULL;
if (this->m_gausstab) {
MEM_freeN(this->m_gausstab);
this->m_gausstab = NULL;
}
if (this->m_distbuf_inv) {
MEM_freeN(this->m_distbuf_inv);
this->m_distbuf_inv = NULL;
}
deinitMutex();
}

View File

@ -146,10 +146,16 @@ void GaussianAlphaYBlurOperation::executePixel(float output[4], int x, int y, vo
void GaussianAlphaYBlurOperation::deinitExecution()
{
BlurBaseOperation::deinitExecution();
MEM_freeN(this->m_gausstab);
this->m_gausstab = NULL;
MEM_freeN(this->m_distbuf_inv);
this->m_distbuf_inv = NULL;
if (this->m_gausstab) {
MEM_freeN(this->m_gausstab);
this->m_gausstab = NULL;
}
if (this->m_distbuf_inv) {
MEM_freeN(this->m_distbuf_inv);
this->m_distbuf_inv = NULL;
}
deinitMutex();
}

View File

@ -157,8 +157,11 @@ void GaussianBokehBlurOperation::executePixel(float output[4], int x, int y, voi
void GaussianBokehBlurOperation::deinitExecution()
{
BlurBaseOperation::deinitExecution();
MEM_freeN(this->m_gausstab);
this->m_gausstab = NULL;
if (this->m_gausstab) {
MEM_freeN(this->m_gausstab);
this->m_gausstab = NULL;
}
deinitMutex();
}

View File

@ -100,6 +100,7 @@ void GaussianXBlurOperation::executePixel(float output[4], int x, int y, void *d
void GaussianXBlurOperation::deinitExecution()
{
BlurBaseOperation::deinitExecution();
if (this->m_gausstab) {
MEM_freeN(this->m_gausstab);
this->m_gausstab = NULL;

View File

@ -101,6 +101,7 @@ void GaussianYBlurOperation::executePixel(float output[4], int x, int y, void *d
void GaussianYBlurOperation::deinitExecution()
{
BlurBaseOperation::deinitExecution();
if (this->m_gausstab) {
MEM_freeN(this->m_gausstab);
this->m_gausstab = NULL;