Skip to content

Commit

Permalink
Memory leaks in Cortex
Browse files Browse the repository at this point in the history
CID 605755, 605756, 605757 and 605758.
  • Loading branch information
stpere committed Jul 1, 2015
1 parent 82652e6 commit 385d907
Showing 1 changed file with 24 additions and 16 deletions.
40 changes: 24 additions & 16 deletions src/apps/cortex/NodeManager/NodeRef.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -996,21 +996,23 @@ status_t NodeRef::getFreeInputs(
int32 inputBufferSize = 16;
media_input* inputBuffer = new media_input[inputBufferSize];

while(true) {
while (true) {
err = r->GetFreeInputsFor(
m_info.node, inputBuffer, inputBufferSize, &count, filterType);
if(err < B_OK)
if (err < B_OK) {
delete [] inputBuffer;
return err;
}

if(count == inputBufferSize) {
if (count == inputBufferSize) {
// buffer too small; increase & try again
inputBufferSize += bufferInc;
delete [] inputBuffer;
inputBuffer = new media_input[inputBufferSize];
continue;
}

if(count)
if (count)
// copy found inputs into vector
copy(inputBuffer, inputBuffer + count,
back_inserter(ioInputs));
Expand Down Expand Up @@ -1038,21 +1040,23 @@ status_t NodeRef::getConnectedInputs(
int32 inputBufferSize = 16;
media_input* inputBuffer = new media_input[inputBufferSize];

while(true) {
while (true) {
err = r->GetConnectedInputsFor(
m_info.node, inputBuffer, inputBufferSize, &count);
if(err < B_OK)
if (err < B_OK) {
delete [] inputBuffer;
return err;
}

if(count == inputBufferSize) {
if (count == inputBufferSize) {
// buffer too small; increase & try again
inputBufferSize += bufferInc;
delete [] inputBuffer;
inputBuffer = new media_input[inputBufferSize];
continue;
}

if(count)
if (count)
// copy found inputs matching the given type into vector
remove_copy_if(inputBuffer, inputBuffer + count,
back_inserter(ioInputs),
Expand Down Expand Up @@ -1080,21 +1084,23 @@ status_t NodeRef::getFreeOutputs(
int32 outputBufferSize = 16;
media_output* outputBuffer = new media_output[outputBufferSize];

while(true) {
while (true) {
err = r->GetFreeOutputsFor(
m_info.node, outputBuffer, outputBufferSize, &count, filterType);
if(err < B_OK)
if (err < B_OK) {
delete [] outputBuffer;
return err;
}

if(count == outputBufferSize) {
if (count == outputBufferSize) {
// buffer too small; increase & try again
outputBufferSize += bufferInc;
delete [] outputBuffer;
outputBuffer = new media_output[outputBufferSize];
continue;
}

if(count)
if (count)
// copy found outputs into vector
copy(outputBuffer, outputBuffer + count,
back_inserter(ioOutputs));
Expand All @@ -1121,21 +1127,23 @@ status_t NodeRef::getConnectedOutputs(
int32 outputBufferSize = 16;
media_output* outputBuffer = new media_output[outputBufferSize];

while(true) {
while (true) {
err = r->GetConnectedOutputsFor(
m_info.node, outputBuffer, outputBufferSize, &count);
if(err < B_OK)
if (err < B_OK) {
delete [] outputBuffer;
return err;
}

if(count == outputBufferSize) {
if (count == outputBufferSize) {
// buffer too small; increase & try again
outputBufferSize += bufferInc;
delete [] outputBuffer;
outputBuffer = new media_output[outputBufferSize];
continue;
}

if(count)
if (count)
// copy found outputs matching the given type into vector
remove_copy_if(outputBuffer, outputBuffer + count,
back_inserter(ioOutputs),
Expand Down

0 comments on commit 385d907

Please sign in to comment.