diff --git a/src/bin/exrstdattr/main.cpp b/src/bin/exrstdattr/main.cpp index 4101993916..ab040210fe 100644 --- a/src/bin/exrstdattr/main.cpp +++ b/src/bin/exrstdattr/main.cpp @@ -848,6 +848,9 @@ main (int argc, char** argv) outPart.copyPixels (inPart); } } + + for (int i=0; i +void freeDeepBuffers (list> & channels) +{ + for (auto i = channels.begin (); i != channels.end (); i++) + { + Array2D & channel = *i; + for (int y = 0; y < channel.height (); y++) + for (int x = 0; x < channel.width (); x++) + delete[] channel[y][x]; + } +} + template void modifyChannels(list> & channels, T delta) { @@ -474,6 +486,10 @@ void modifyMultipart () outputPart.setFrameBuffer (frameBuffer); outputPart.writeTiles (0, outputPart.numXTiles () - 1, 0, outputPart.numYTiles () - 1); } + + freeDeepBuffers(intChannels); + freeDeepBuffers(halfChannels); + freeDeepBuffers(floatChannels); } } }