diff --git a/rtengine/rawimagesource.cc b/rtengine/rawimagesource.cc index 487bb1959..2b45bfe38 100644 --- a/rtengine/rawimagesource.cc +++ b/rtengine/rawimagesource.cc @@ -5054,9 +5054,23 @@ BENCHFUN return; } - array2D L(W,H); - array2D YOld(W,H); - array2D YNew(W,H); + array2D* Lbuffer = nullptr; + if (!redCache) { + Lbuffer = new array2D(W, H); + } + + array2D* YOldbuffer = nullptr; + if (!greenCache) { + YOldbuffer = new array2D(W, H); + } + + array2D* YNewbuffer = nullptr; + if (!blueCache) { + YNewbuffer = new array2D(W, H); + } + array2D& L = Lbuffer ? *Lbuffer : red; + array2D& YOld = YOldbuffer ? * YOldbuffer : green; + array2D& YNew = YNewbuffer ? * YNewbuffer : blue; StopWatch Stop1("rgb2YL"); #ifdef _OPENMP @@ -5110,6 +5124,9 @@ BENCHFUN } } Stop2.stop(); + delete Lbuffer; + delete YOldbuffer; + delete YNewbuffer; if (plistener) { plistener->setProgress(1.0); }